diff options
author | Victor Stinner <vstinner@python.org> | 2020-02-07 00:24:29 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-07 00:24:29 (GMT) |
commit | c86a11221df7e37da389f9c6ce6e47ea22dc44ff (patch) | |
tree | c27a35a01bde1554488268dd3bbeb8b4c46e193c /Objects/object.c | |
parent | a93c51e3a8e15f1a486d11d5b55a64f3381babe0 (diff) | |
download | cpython-c86a11221df7e37da389f9c6ce6e47ea22dc44ff.zip cpython-c86a11221df7e37da389f9c6ce6e47ea22dc44ff.tar.gz cpython-c86a11221df7e37da389f9c6ce6e47ea22dc44ff.tar.bz2 |
bpo-39573: Add Py_SET_REFCNT() function (GH-18389)
Add a Py_SET_REFCNT() function to set the reference counter of an
object.
Diffstat (limited to 'Objects/object.c')
-rw-r--r-- | Objects/object.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/Objects/object.c b/Objects/object.c index f9682fe..aca20e8 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -213,7 +213,7 @@ PyObject_CallFinalizerFromDealloc(PyObject *self) } /* Temporarily resurrect the object. */ - Py_REFCNT(self) = 1; + Py_SET_REFCNT(self, 1); PyObject_CallFinalizer(self); @@ -223,7 +223,8 @@ PyObject_CallFinalizerFromDealloc(PyObject *self) /* Undo the temporary resurrection; can't use DECREF here, it would * cause a recursive call. */ - if (--Py_REFCNT(self) == 0) { + Py_SET_REFCNT(self, Py_REFCNT(self) - 1); + if (Py_REFCNT(self) == 0) { return 0; /* this is the normal path out */ } @@ -231,7 +232,7 @@ PyObject_CallFinalizerFromDealloc(PyObject *self) * never happened. */ Py_ssize_t refcnt = Py_REFCNT(self); _Py_NewReference(self); - Py_REFCNT(self) = refcnt; + Py_SET_REFCNT(self, refcnt); _PyObject_ASSERT(self, (!PyType_IS_GC(Py_TYPE(self)) @@ -1818,7 +1819,7 @@ _Py_NewReference(PyObject *op) #ifdef Py_REF_DEBUG _Py_RefTotal++; #endif - Py_REFCNT(op) = 1; + Py_SET_REFCNT(op, 1); #ifdef Py_TRACE_REFS _Py_AddToAllObjects(op, 1); #endif |