Skip to content

Commit ec5f541

Browse files
authored
[3.13] gh-140487: Fix Py_RETURN_NOTIMPLEMENTED in limited C API 3.11 (GH-140636) (GH-140670)
Py_RETURN_NONE, Py_RETURN_TRUE and Py_RETURN_FALSE have already been fixed by commit 9258f3d (issue gh-134989). (cherry picked from commit c636477)
1 parent 0e3b47b commit ec5f541

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

Include/object.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,8 +1130,13 @@ PyAPI_DATA(PyObject) _Py_NotImplementedStruct; /* Don't use this directly */
11301130
# define Py_NotImplemented (&_Py_NotImplementedStruct)
11311131
#endif
11321132

1133-
/* Macro for returning Py_NotImplemented from a function */
1134-
#define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
1133+
/* Macro for returning Py_NotImplemented from a function. Only treat
1134+
* Py_NotImplemented as immortal in the limited C API 3.12 and newer. */
1135+
#if defined(Py_LIMITED_API) && Py_LIMITED_API+0 < 0x030c0000
1136+
# define Py_RETURN_NOTIMPLEMENTED return Py_NewRef(Py_NotImplemented)
1137+
#else
1138+
# define Py_RETURN_NOTIMPLEMENTED return Py_NotImplemented
1139+
#endif
11351140

11361141
/* Rich comparison opcodes */
11371142
#define Py_LT 0
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix :c:macro:`Py_RETURN_NOTIMPLEMENTED` in limited C API 3.11 and older:
2+
don't treat ``Py_NotImplemented`` as immortal. Patch by Victor Stinner.

0 commit comments

Comments
 (0)