STINNER Victor <vstin...@python.org> added the comment:

Thanks Meador Inge for the bug report and thanks Sean Gillespie for the fix! It 
just took 9 years to fix this corner case ;-)

Copy of the comment on the PR:
https://github.com/python/cpython/pull/19914#pullrequestreview-419331432

I tried to rewrite _ctypes_callproc() to use PyMem_Malloc() instead of 
alloca(), but it's quite complicated. There are 3 arrays with a length of 
argcount items: args, avalues, atypes. Moreover, resbuf is also allocated with 
alloca(). When using PyMem_Malloc(), error handling is much more complicated.

I also tried to restrict the overall usage of stack memory to 4096 bytes (size 
of one page on x86), but users would be surprised by CTYPES_MAX_ARGCOUNT value.

I would say that raising an exception is better than crashing for a lot of 
arguments. If someone is blocked by this new limitation, in that case we can 
revisit the PyMem_Malloc() idea.

----------
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed
versions: +Python 3.10, Python 3.7, Python 3.8, Python 3.9 -Python 2.7, Python 
3.2, Python 3.3

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue13097>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to