diff options
author | Benjamin Peterson <benjamin@python.org> | 2012-04-24 14:32:57 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2012-04-24 14:32:57 (GMT) |
commit | 7ce67e45f89d5d4955c4f72a64631aa9b56b8471 (patch) | |
tree | 5adf7621faeca5c97bf110a1957a6c10ba5c13f2 | |
parent | 01296da8df89a6a710cc883902079cbdc2601b85 (diff) | |
download | cpython-7ce67e45f89d5d4955c4f72a64631aa9b56b8471.zip cpython-7ce67e45f89d5d4955c4f72a64631aa9b56b8471.tar.gz cpython-7ce67e45f89d5d4955c4f72a64631aa9b56b8471.tar.bz2 |
fix dict gc tracking (#13903)
-rw-r--r-- | Objects/dictobject.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 51a8796..6eb9b25 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -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; |