From 73325bbe774b16891f999fb557177206470676b1 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 9 Dec 2021 09:58:09 +0100 Subject: bpo-46007: Exclude PyUnicode_CHECK_INTERNED() from limited C API (GH-29987) Exclude the PyUnicode_CHECK_INTERNED() macro from the limited C API, because it uses the PyASCIIObject structure which is excluded from the limited C API. Automerge-Triggered-By: GH:encukou --- Doc/whatsnew/3.11.rst | 6 ++++++ Include/cpython/unicodeobject.h | 4 ++++ Include/unicodeobject.h | 4 ---- Misc/NEWS.d/next/C API/2021-12-08-12-41-51.bpo-46007.sMgDLz.rst | 3 +++ 4 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/C API/2021-12-08-12-41-51.bpo-46007.sMgDLz.rst diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 264a801..4a113cd 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -723,6 +723,12 @@ Porting to Python 3.11 been included directly, consider including ``Python.h`` instead. (Contributed by Victor Stinner in :issue:`35134`.) +* The :c:func:`PyUnicode_CHECK_INTERNED` macro has been excluded from the + limited C API. It was never usable there, because it used internal structures + which are not available in the limited C API. + (Contributed by Victor Stinner in :issue:`46007`.) + + Deprecated ---------- diff --git a/Include/cpython/unicodeobject.h b/Include/cpython/unicodeobject.h index e02137c..be5647c 100644 --- a/Include/cpython/unicodeobject.h +++ b/Include/cpython/unicodeobject.h @@ -279,6 +279,10 @@ PyAPI_FUNC(int) _PyUnicode_CheckConsistency( #define SSTATE_INTERNED_MORTAL 1 #define SSTATE_INTERNED_IMMORTAL 2 +/* Use only if you know it's a string */ +#define PyUnicode_CHECK_INTERNED(op) \ + (((PyASCIIObject *)(op))->state.interned) + /* Return true if the string contains only ASCII characters, or 0 if not. The string may be compact (PyUnicode_IS_COMPACT_ASCII) or not, but must be ready. */ diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h index abce967..6426c5d 100644 --- a/Include/unicodeobject.h +++ b/Include/unicodeobject.h @@ -269,10 +269,6 @@ PyAPI_FUNC(PyObject *) PyUnicode_InternFromString( // and will be removed in Python 3.12. Use PyUnicode_InternInPlace() instead. Py_DEPRECATED(3.10) PyAPI_FUNC(void) PyUnicode_InternImmortal(PyObject **); -/* Use only if you know it's a string */ -#define PyUnicode_CHECK_INTERNED(op) \ - (((PyASCIIObject *)(op))->state.interned) - /* --- wchar_t support for platforms which support it --------------------- */ #ifdef HAVE_WCHAR_H diff --git a/Misc/NEWS.d/next/C API/2021-12-08-12-41-51.bpo-46007.sMgDLz.rst b/Misc/NEWS.d/next/C API/2021-12-08-12-41-51.bpo-46007.sMgDLz.rst new file mode 100644 index 0000000..6ed871b --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-12-08-12-41-51.bpo-46007.sMgDLz.rst @@ -0,0 +1,3 @@ +The :c:func:`PyUnicode_CHECK_INTERNED` macro has been excluded from the limited +C API. It was never usable there, because it used internal structures which are +not available in the limited C API. Patch by Victor Stinner. -- cgit v0.12