]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-110481: Fix Py_SET_REFCNT() integer overflow (#112174)
authorVictor Stinner <vstinner@python.org>
Fri, 1 Dec 2023 14:50:16 +0000 (15:50 +0100)
committerGitHub <noreply@github.com>
Fri, 1 Dec 2023 14:50:16 +0000 (15:50 +0100)
commit5f6ac2d88a49b8a7c764691365cd41ee6226a8d0
tree317433a73a42b5b11d85ff220d8238f76171d0f5
parentc2982380f827e53057068eccf9f1a16b5a653728
gh-110481: Fix Py_SET_REFCNT() integer overflow (#112174)

If Py_NOGIL is defined and Py_SET_REFCNT() is called with a reference
count larger than UINT32_MAX, make the object immortal.

Set _Py_IMMORTAL_REFCNT constant type to Py_ssize_t to fix the
following compiler warning:

Include/internal/pycore_global_objects_fini_generated.h:14:24:
warning: comparison of integers of different signs: 'Py_ssize_t'
(aka 'long') and 'unsigned int' [-Wsign-compare]

    if (Py_REFCNT(obj) < _Py_IMMORTAL_REFCNT) {
        ~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~
Doc/c-api/refcounting.rst
Doc/using/configure.rst
Include/object.h