]> granicus.if.org Git - python/commitdiff
fix dict gc tracking (#13903)
authorBenjamin Peterson <benjamin@python.org>
Tue, 24 Apr 2012 14:32:57 +0000 (10:32 -0400)
committerBenjamin Peterson <benjamin@python.org>
Tue, 24 Apr 2012 14:32:57 +0000 (10:32 -0400)
Objects/dictobject.c

index 51a8796ae381132187fcbaa72b152deb5784e160..6eb9b25a1f29ac31963950f630da5b8f89ce85ab 100644 (file)
@@ -2022,6 +2022,8 @@ PyDict_Copy(PyObject *o)
             Py_XINCREF(value);
             split_copy->ma_values[i] = value;
         }
+        if (_PyObject_GC_IS_TRACKED(mp))
+            _PyObject_GC_TRACK(split_copy);
         return (PyObject *)split_copy;
     }
     copy = PyDict_New();
@@ -2220,6 +2222,7 @@ dict_setdefault(register PyDictObject *mp, PyObject *args)
                 return NULL;
             ep = find_empty_slot(mp, key, hash, &value_addr);
         }
+        MAINTAIN_TRACKING(mp, key, failobj);
         ep->me_key = key;
         ep->me_hash = hash;
         *value_addr = failobj;