[Python-checkins] cpython: fix dict gc tracking (#13903)

benjamin.peterson python-checkins at python.org
Tue Apr 24 16:34:00 CEST 2012


http://hg.python.org/cpython/rev/507a6703d6a3
changeset:   76517:507a6703d6a3
user:        Benjamin Peterson <benjamin at python.org>
date:        Tue Apr 24 10:32:57 2012 -0400
summary:
  fix dict gc tracking (#13903)

files:
  Objects/dictobject.c |  3 +++
  1 files changed, 3 insertions(+), 0 deletions(-)


diff --git a/Objects/dictobject.c b/Objects/dictobject.c
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -2022,6 +2022,8 @@
             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 @@
                 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;

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list