bpo-34042: Fix dict.copy() to maintain correct total refcount (GH-8119)
(cherry picked from commit 0b75228700
)
Co-authored-by: Yury Selivanov <yury@magic.io>
This commit is contained in:
parent
4bd5fce27d
commit
127bd9bfd5
|
@ -0,0 +1,2 @@
|
||||||
|
Fix dict.copy() to maintain correct total refcount (as reported by
|
||||||
|
sys.gettotalrefcount()).
|
|
@ -656,6 +656,13 @@ clone_combined_dict(PyDictObject *orig)
|
||||||
/* Maintain tracking. */
|
/* Maintain tracking. */
|
||||||
_PyObject_GC_TRACK(new);
|
_PyObject_GC_TRACK(new);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Since we copied the keys table we now have an extra reference
|
||||||
|
in the system. Manually call _Py_INC_REFTOTAL to signal that
|
||||||
|
we have it now; calling DK_INCREF would be an error as
|
||||||
|
keys->dk_refcnt is already set to 1 (after memcpy). */
|
||||||
|
_Py_INC_REFTOTAL;
|
||||||
|
|
||||||
return (PyObject *)new;
|
return (PyObject *)new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue