diff options
| author | Victor Stinner <vstinner@python.org> | 2021-10-14 23:09:06 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-14 23:09:06 (GMT) |
| commit | 284994762d820d8e09cc019f8f7c4bc501e37dd4 (patch) | |
| tree | 0ccb6119fb1f2e0b50b1dc9a9b7b75ff71272020 | |
| parent | af1083e975b9627a5c97013d3a2b9aef0e4b333c (diff) | |
| download | cpython-284994762d820d8e09cc019f8f7c4bc501e37dd4.zip cpython-284994762d820d8e09cc019f8f7c4bc501e37dd4.tar.gz cpython-284994762d820d8e09cc019f8f7c4bc501e37dd4.tar.bz2 | |
bpo-45434: Limited Python.h no longer includes stdio.h (GH-28960)
The <Python.h> header file no longer includes <stdio.h> if the
Py_LIMITED_API macro is defined.
| -rw-r--r-- | Doc/whatsnew/3.11.rst | 7 | ||||
| -rw-r--r-- | Include/Python.h | 11 | ||||
| -rw-r--r-- | Misc/NEWS.d/next/C API/2021-10-15-00-30-45.bpo-45434.XLtsbK.rst | 5 |
3 files changed, 16 insertions, 7 deletions
diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index e8d64a8..a6e30c7 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -565,6 +565,13 @@ Porting to Python 3.11 ``exit()`` and ``abort()``. (Contributed by Victor Stinner in :issue:`45434`.) +* The ``<Python.h>`` header file no longer includes ``<stdio.h>`` if the + ``Py_LIMITED_API`` macro is defined. Functions expecting ``FILE*`` are + excluded from the limited C API (:pep:`384`). C extensions using + ``<stdio.h>`` must now include it explicitly. The system ``<stdio.h>`` + header provides functions like ``printf()`` and ``fopen()``. + (Contributed by Victor Stinner in :issue:`45434`.) + Deprecated ---------- diff --git a/Include/Python.h b/Include/Python.h index 4f62103..dc5c9b8 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -16,12 +16,10 @@ # define _SGI_MP_SOURCE #endif -#include <stdio.h> // NULL, FILE* -#ifndef NULL -# error "Python.h requires that stdio.h define NULL." -#endif - #include <string.h> // memcpy() +#ifndef Py_LIMITED_API +# include <stdio.h> // FILE* +#endif #ifdef HAVE_ERRNO_H # include <errno.h> // errno #endif @@ -29,8 +27,7 @@ # include <unistd.h> #endif #ifdef HAVE_STDDEF_H - // For size_t -# include <stddef.h> +# include <stddef.h> // size_t #endif #include <assert.h> // assert() diff --git a/Misc/NEWS.d/next/C API/2021-10-15-00-30-45.bpo-45434.XLtsbK.rst b/Misc/NEWS.d/next/C API/2021-10-15-00-30-45.bpo-45434.XLtsbK.rst new file mode 100644 index 0000000..4a06635 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2021-10-15-00-30-45.bpo-45434.XLtsbK.rst @@ -0,0 +1,5 @@ +The ``<Python.h>`` header file no longer includes ``<stdio.h>`` if the +``Py_LIMITED_API`` macro is defined. Functions expecting ``FILE*`` are excluded +from the limited C API (:pep:`384`). C extensions using ``<stdio.h>`` must now +include it explicitly. +Patch by Victor Stinner. |
