From: Christian Heimes Date: Mon, 4 Apr 2022 17:13:42 +0000 (+0300) Subject: bpo-47208: Allow vendors to override CTYPES_MAX_ARGCOUNT (GH-32297) X-Git-Tag: v3.11.0a7~30 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d1b1c885d8f276a0b1ff2e327270916396a8b842;p=thirdparty%2FPython%2Fcpython.git bpo-47208: Allow vendors to override CTYPES_MAX_ARGCOUNT (GH-32297) --- diff --git a/Lib/ctypes/test/test_callbacks.py b/Lib/ctypes/test/test_callbacks.py index 5561ffefe12f..1099cf9a69c6 100644 --- a/Lib/ctypes/test/test_callbacks.py +++ b/Lib/ctypes/test/test_callbacks.py @@ -4,6 +4,7 @@ from test import support from ctypes import * from ctypes.test import need_symbol +from _ctypes import CTYPES_MAX_ARGCOUNT import _ctypes_test class Callbacks(unittest.TestCase): @@ -293,8 +294,6 @@ class SampleCallbacksTestCase(unittest.TestCase): def func(*args): return len(args) - CTYPES_MAX_ARGCOUNT = 1024 - # valid call with nargs <= CTYPES_MAX_ARGCOUNT proto = CFUNCTYPE(c_int, *(c_int,) * CTYPES_MAX_ARGCOUNT) cb = proto(func) diff --git a/Misc/NEWS.d/next/Library/2022-04-04-08-54-31.bpo-47208.cOh9xZ.rst b/Misc/NEWS.d/next/Library/2022-04-04-08-54-31.bpo-47208.cOh9xZ.rst new file mode 100644 index 000000000000..a5da321f77a6 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-04-04-08-54-31.bpo-47208.cOh9xZ.rst @@ -0,0 +1 @@ +Allow vendors to override :const:`CTYPES_MAX_ARGCOUNT`. diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index 9177225f3f92..041592369412 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -5781,6 +5781,7 @@ _ctypes_add_objects(PyObject *mod) #endif MOD_ADD("RTLD_LOCAL", PyLong_FromLong(RTLD_LOCAL)); MOD_ADD("RTLD_GLOBAL", PyLong_FromLong(RTLD_GLOBAL)); + MOD_ADD("CTYPES_MAX_ARGCOUNT", PyLong_FromLong(CTYPES_MAX_ARGCOUNT)); MOD_ADD("ArgumentError", Py_NewRef(PyExc_ArgError)); return 0; #undef MOD_ADD diff --git a/Modules/_ctypes/ctypes.h b/Modules/_ctypes/ctypes.h index 0badb48b2a41..da1941caf392 100644 --- a/Modules/_ctypes/ctypes.h +++ b/Modules/_ctypes/ctypes.h @@ -18,7 +18,9 @@ * This limit is enforced for the `alloca()` call in `_ctypes_callproc`, * to avoid allocating a massive buffer on the stack. */ -#define CTYPES_MAX_ARGCOUNT 1024 +#ifndef CTYPES_MAX_ARGCOUNT + #define CTYPES_MAX_ARGCOUNT 1024 +#endif typedef struct tagPyCArgObject PyCArgObject; typedef struct tagCDataObject CDataObject;