blueloveTH 2 年 前
コミット
b42a2d5b26
4 ファイル変更7 行追加6 行削除
  1. 1 1
      include/pocketpy/common.h
  2. 1 1
      include/pocketpy/dict.h
  3. 3 2
      src/dict.cpp
  4. 2 2
      src/pocketpy.cpp

+ 1 - 1
include/pocketpy/common.h

@@ -21,7 +21,7 @@
 #include <type_traits>
 #include <random>
 
-#define PK_VERSION				"1.1.3"
+#define PK_VERSION				"1.1.4"
 
 #include "config.h"
 #include "export.h"

+ 1 - 1
include/pocketpy/dict.h

@@ -49,7 +49,7 @@ struct Dict{
     PyObject* try_get(PyObject* key) const;
 
     bool contains(PyObject* key) const;
-    void erase(PyObject* key);
+    bool erase(PyObject* key);
     void update(const Dict& other);
 
     template<typename __Func>

+ 3 - 2
src/dict.cpp

@@ -102,10 +102,10 @@ namespace pkpy{
         return ok;
     }
 
-    void Dict::erase(PyObject* key){
+    bool Dict::erase(PyObject* key){
         bool ok; int i;
         _probe(key, ok, i);
-        if(!ok) return;
+        if(!ok) return false;
         _items[i].first = nullptr;
         _items[i].second = nullptr;
         _size--;
@@ -127,6 +127,7 @@ namespace pkpy{
         }
         _nodes[i].prev = -1;
         _nodes[i].next = -1;
+        return true;
     }
 
     void Dict::update(const Dict& other){

+ 2 - 2
src/pocketpy.cpp

@@ -1077,8 +1077,8 @@ void init_builtins(VM* _vm) {
 
     _vm->bind__delitem__(_vm->tp_dict, [](VM* vm, PyObject* obj, PyObject* key) {
         Dict& self = _CAST(Dict&, obj);
-        if(!self.contains(key)) vm->KeyError(key);
-        self.erase(key);
+        bool ok = self.erase(key);
+        if(!ok) vm->KeyError(key);
     });
 
     _vm->bind_method<1>("dict", "pop", [](VM* vm, ArgsView args) {