diff options
author | Christian Heimes <christian@python.org> | 2022-04-04 17:13:42 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-04 17:13:42 (GMT) |
commit | d1b1c885d8f276a0b1ff2e327270916396a8b842 (patch) | |
tree | 3b2a0ea24178ca47ee87d10563141ba5e8e0cbe0 | |
parent | 1ecfe3d5ae4ddec4e73a6cfc93fed6df43fe0be5 (diff) | |
download | cpython-d1b1c885d8f276a0b1ff2e327270916396a8b842.zip cpython-d1b1c885d8f276a0b1ff2e327270916396a8b842.tar.gz cpython-d1b1c885d8f276a0b1ff2e327270916396a8b842.tar.bz2 |
bpo-47208: Allow vendors to override CTYPES_MAX_ARGCOUNT (GH-32297)
-rw-r--r-- | Lib/ctypes/test/test_callbacks.py | 3 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2022-04-04-08-54-31.bpo-47208.cOh9xZ.rst | 1 | ||||
-rw-r--r-- | Modules/_ctypes/_ctypes.c | 1 | ||||
-rw-r--r-- | Modules/_ctypes/ctypes.h | 4 |
4 files changed, 6 insertions, 3 deletions
diff --git a/Lib/ctypes/test/test_callbacks.py b/Lib/ctypes/test/test_callbacks.py index 5561ffe..1099cf9 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 0000000..a5da321 --- /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 9177225..0415923 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 0badb48..da1941c 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; |