[3.14] gh-134989: Fix Py_RETURN_NONE in the limited C API (GH-135165) (#135178)

gh-134989: Fix Py_RETURN_NONE in the limited C API (GH-135165)

Fix Py_RETURN_NONE, Py_RETURN_TRUE and Py_RETURN_FALSE macros in the
limited C API 3.11 and older:
Don't treat Py_None, Py_True and Py_False as immortal.
(cherry picked from commit 9258f3da91)

Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
Miss Islington (bot) 2025-06-05 15:35:54 +02:00 committed by GitHub
parent 285c69ea38
commit e11d4a18e1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 20 additions and 5 deletions

View file

@ -34,9 +34,16 @@ PyAPI_FUNC(int) Py_IsTrue(PyObject *x);
PyAPI_FUNC(int) Py_IsFalse(PyObject *x);
#define Py_IsFalse(x) Py_Is((x), Py_False)
/* Macros for returning Py_True or Py_False, respectively */
#define Py_RETURN_TRUE return Py_True
#define Py_RETURN_FALSE return Py_False
/* Macros for returning Py_True or Py_False, respectively.
* Only treat Py_True and Py_False as immortal in the limited C API 3.12
* and newer. */
#if defined(Py_LIMITED_API) && Py_LIMITED_API+0 < 0x030c0000
# define Py_RETURN_TRUE return Py_NewRef(Py_True)
# define Py_RETURN_FALSE return Py_NewRef(Py_False)
#else
# define Py_RETURN_TRUE return Py_True
# define Py_RETURN_FALSE return Py_False
#endif
/* Function to return a bool from a C long */
PyAPI_FUNC(PyObject *) PyBool_FromLong(long);