https://github.com/python/cpython/commit/6e5b9f3d00658ce07909d78d1a796e95ad5dba1a commit: 6e5b9f3d00658ce07909d78d1a796e95ad5dba1a branch: main author: Mark Shannon <m...@hotpy.org> committer: markshannon <m...@hotpy.org> date: 2025-03-11T11:53:07Z summary:
GH-127705: Check for immortality in refcount accounting (#131072) Check for immortality in refcount accounting files: M Include/refcount.h diff --git a/Include/refcount.h b/Include/refcount.h index 88918409d934f6..e66e4aaace3140 100644 --- a/Include/refcount.h +++ b/Include/refcount.h @@ -249,7 +249,9 @@ static inline Py_ALWAYS_INLINE void Py_INCREF_MORTAL(PyObject *op) op->ob_refcnt++; _Py_INCREF_STAT_INC(); #if defined(Py_REF_DEBUG) && !defined(Py_LIMITED_API) - _Py_INCREF_IncRefTotal(); + if (!_Py_IsImmortal(op)) { + _Py_INCREF_IncRefTotal(); + } #endif } #endif @@ -391,7 +393,9 @@ static inline void Py_DECREF_MORTAL(const char *filename, int lineno, PyObject * } _Py_DECREF_STAT_INC(); assert(!_Py_IsStaticImmortal(op)); - _Py_DECREF_DecRefTotal(); + if (!_Py_IsImmortal(op)) { + _Py_DECREF_DecRefTotal(); + } if (--op->ob_refcnt == 0) { _Py_Dealloc(op); } @@ -407,7 +411,9 @@ static inline void _Py_DECREF_MORTAL_SPECIALIZED(const char *filename, int linen } _Py_DECREF_STAT_INC(); assert(!_Py_IsStaticImmortal(op)); - _Py_DECREF_DecRefTotal(); + if (!_Py_IsImmortal(op)) { + _Py_DECREF_DecRefTotal(); + } if (--op->ob_refcnt == 0) { destruct(op); } _______________________________________________ Python-checkins mailing list -- python-checkins@python.org To unsubscribe send an email to python-checkins-le...@python.org https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: arch...@mail-archive.com