Include <stdlib.h> explicitly in C files.
Python.h includes <wchar.h>.
* The ``<Python.h>`` header file no longer includes ``<stdlib.h>``. C
extensions using ``<stdlib.h>`` must now include it explicitly.
+ The system ``<stdlib.h>`` header provides functions like:
+ ``malloc()``/``free()``, ``getenv()``, ``strtol()``, ``abs()``, ``strtol()``,
+ ``exit()`` and ``abort()``.
(Contributed by Victor Stinner in :issue:`45434`.)
Deprecated
# include <stddef.h>
#endif
-#include <assert.h>
+#include <assert.h> // assert()
+#include <wchar.h> // wchar_t
#include "pyport.h"
#include "pymacro.h"
// ...
// _Py_END_SUPPRESS_IPH
#if defined _MSC_VER && _MSC_VER >= 1900
+
+# include <stdlib.h> // _set_thread_local_invalid_parameter_handler()
+
extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler;
# define _Py_BEGIN_SUPPRESS_IPH \
{ _invalid_parameter_handler _Py_old_handler = \
* see https://bugs.python.org/issue28126 */
#define Py_MEMCPY memcpy
-#include <stdlib.h>
-
#ifdef HAVE_IEEEFP_H
#include <ieeefp.h> /* needed for 'finite' declaration on some platforms */
#endif
The ``<Python.h>`` header file no longer includes ``<stdlib.h>``. C
-extensions using ``<stdlib.h>`` must now include it explicitly. Patch by
-Victor Stinner.
+extensions using ``<stdlib.h>`` must now include it explicitly.
+The system ``<stdlib.h>`` header provides functions like:
+``malloc()``/``free()``, ``getenv()``, ``strtol()``, ``abs()``, ``strtol()``,
+``exit()`` and ``abort()``.
+Patch by Victor Stinner.
#include <windows.h>
#endif
+#include <stdlib.h> // qsort()
+
#define EXPORT(x) Py_EXPORTED_SYMBOL x
/* some functions handy for testing */
#define PY_SSIZE_T_CLEAN
#include "Python.h"
+#include "gdbm.h"
-#include <sys/types.h>
-#include <sys/stat.h>
#include <fcntl.h>
-#include "gdbm.h"
+#include <stdlib.h> // free()
+#include <sys/stat.h>
+#include <sys/types.h>
#if defined(WIN32) && !defined(__CYGWIN__)
#include "gdbmerrno.h"
#include "Python.h"
#include "structmember.h" // PyMemberDef
+#include <stdlib.h> // free()
#include <string.h>
#include <lzma.h>
#include "pycore_moduleobject.h" // _PyModule_GetState()
#include "structmember.h" // PyMemberDef
+#include <stdlib.h> // strtol()
+
PyDoc_STRVAR(pickle_module_doc,
"Optimized C implementation for the Python pickle module.");
#include "pycore_hashtable.h"
#include <pycore_frame.h>
+#include <stdlib.h> // malloc()
+
#include "clinic/_tracemalloc.c.h"
+
/*[clinic input]
module _tracemalloc
[clinic start generated code]*/
#include "pycore_pyerrors.h" // _Py_DumpExtensionModules
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "pycore_traceback.h" // _Py_DumpTracebackThreads
-#include <signal.h>
+
+#include "frameobject.h"
+
#include <object.h>
-#include <frameobject.h>
#include <signal.h>
+#include <signal.h>
+#include <stdlib.h> // abort()
#if defined(HAVE_PTHREAD_SIGMASK) && !defined(HAVE_BROKEN_PTHREAD_SIGMASK)
# include <pthread.h>
#endif
#include "pycore_pathconfig.h"
#include "osdefs.h" // DELIM
-#include <sys/types.h>
+#include <stdlib.h> // getenv()
#include <string.h>
+#include <sys/types.h>
#ifdef __APPLE__
# include <mach-o/dyld.h>
#include "Python.h"
+#include <stdlib.h> // free()
#include <sys/time.h>
#include <sys/types.h>
#include <rpc/rpc.h>
#include "Python.h"
#include "structmember.h" // PyMemberDef
+#include <stdlib.h> // getenv()
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#else
# undef HAVE_FACCESSAT
#endif
-#include <stdio.h> /* needed for ctermid() */
+#include <stdio.h> // ctermid()
+#include <stdlib.h> // system()
/*
* A number of APIs are available on macOS from a certain macOS version.
/* Standard definitions */
#include "Python.h"
-#include <stddef.h>
-#include <signal.h>
+
#include <errno.h>
+#include <signal.h>
+#include <stddef.h>
+#include <stdlib.h> // free()
#include <sys/time.h>
#if defined(HAVE_SETLOCALE)
#include <ctype.h>
#include <float.h>
+#include <stdlib.h> // strtol()
/*[clinic input]
class float "PyObject *" "&PyFloat_Type"
#include "pycore_pystate.h" // _Py_IsMainInterpreter()
#include "longintrepr.h"
-#include <float.h>
#include <ctype.h>
+#include <float.h>
#include <stddef.h>
+#include <stdlib.h> // abs()
#include "clinic/longobject.c.h"
/*[clinic input]
#include "pycore_pymem.h" // _PyTraceMalloc_Config
#include <stdbool.h>
+#include <stdlib.h> // malloc()
/* Defined in tracemalloc.c */
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
+#include <stdlib.h> /* __argc, __wargv */
int WINAPI wWinMain(
HINSTANCE hInstance, /* handle to current instance */
#include <pycore_import.h>
#include <stdio.h>
+#include <stdlib.h> // malloc()
#include <sys/types.h>
#include <sys/stat.h>
#ifndef MS_WINDOWS
#include <Python.h>
#include <inttypes.h>
#include <stdio.h>
+#include <stdlib.h> // putenv()
#include <wchar.h>
/*********************************************************
#include "Python.h"
#include "pycore_dtoa.h"
+#include <stdlib.h> // exit()
/* if PY_NO_SHORT_FLOAT_REPR is defined, then don't even try to compile
the following code */
#endif
#endif
+#include <ctype.h>
#ifdef MS_WINDOWS
-#include <windows.h>
-#include <winbase.h>
+# include <windows.h>
+# include <winbase.h>
+# include <stdlib.h> // _sys_nerr
#endif
-#include <ctype.h>
#ifdef __cplusplus
extern "C" {
#include "pycore_runtime.h" // _PyRuntime
#include "osdefs.h" // SEP
#include <locale.h>
+#include <stdlib.h> // mbstowcs()
#ifdef MS_WINDOWS
# include <malloc.h>
#include "pycore_pystate.h" // _PyThreadState_GET()
#include "osdefs.h" // DELIM
+
#include <locale.h> // setlocale()
+#include <stdlib.h> // getenv()
#if defined(MS_WINDOWS) || defined(__CYGWIN__)
# ifdef HAVE_IO_H
# include <io.h>
#include "pycore_initconfig.h" // _PyArgv
#include "pycore_pymem.h" // _PyMem_GetAllocatorName()
#include "pycore_runtime.h" // _PyRuntime_Initialize()
+
#include <locale.h> // setlocale()
+#include <stdlib.h> // getenv()
/* Forward declarations */
#include "pycore_traceback.h" // _Py_DumpTracebackThreads()
#include <locale.h> // setlocale()
+#include <stdlib.h> // getenv()
#if defined(__APPLE__)
#include <mach-o/loader.h>
/* Format bytes as hexadecimal */
#include "Python.h"
-#include "pycore_strhex.h" // _Py_strhex_with_sep()
-
+#include "pycore_strhex.h" // _Py_strhex_with_sep()
+#include <stdlib.h> // abs()
static PyObject *_Py_strhex_impl(const char* argbuf, const Py_ssize_t arglen,
const PyObject* sep, int bytes_per_sep_group,