From: Victor Stinner Date: Thu, 9 Dec 2021 08:58:09 +0000 (+0100) Subject: bpo-46007: Exclude PyUnicode_CHECK_INTERNED() from limited C API (GH-29987) X-Git-Tag: v3.11.0a4~251 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=73325bbe774b16891f999fb557177206470676b1;p=thirdparty%2FPython%2Fcpython.git 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 --- diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 264a801da789..4a113cdb8905 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 e02137c7cad7..be5647c7d263 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 abce967caff7..6426c5d06b44 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 000000000000..6ed871b9950a --- /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.