New submission from STINNER Victor <vstin...@redhat.com>:

Currently, even when Python is compiled in debug mode, PyTuple_GET_ITEM() 
doesn't check that the first argument is a tuple objet and that the second 
argument is valid index. It can lead to a crash and Python doesn't help 
debugging.

I propose to convert the macro to a function call and use regular assertions to 
abort Python if the C API is misused.

I propose to use a function call rather than abusing the preprocessor syntax 
like (assert(...),expr) syntax used in unicodeobject.h, because I the 
preprocessor causes complex bugs (difficult to understand and to fix/work 
around) and because later I would like to experiment to be able to compile C 
extensions to always use function calls, but get a different implementation 
depending on the "Python runtime".

I elaborated this idea on this website:

* https://pythoncapi.readthedocs.io/runtimes.html#debug-build
* https://pythoncapi.readthedocs.io/

I am working on an implementation.

----------
components: Interpreter Core
messages: 329523
nosy: vstinner
priority: normal
severity: normal
status: open
title: Convert PyTuple_GET_ITEM() macro to a function call with additional 
checks in debug mode
versions: Python 3.8

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

Reply via email to