]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
bpo-42979: Use _Py_CheckSlotResult() to check slots result (GH-24356)
authorVictor Stinner <vstinner@python.org>
Fri, 29 Jan 2021 15:53:03 +0000 (16:53 +0100)
committerGitHub <noreply@github.com>
Fri, 29 Jan 2021 15:53:03 +0000 (16:53 +0100)
commita6192635f1e62af2bb8a435487ebb51800edd671
treea1c012c74a7d78b53300300c217428710da5477b
parentd6c33fbd346765c6a8654dccacb2338006bf2b47
bpo-42979: Use _Py_CheckSlotResult() to check slots result (GH-24356)

When Python is built in debug mode (with C assertions), calling a
type slot like sq_length (__len__() in Python) now fails with a fatal
error if the slot succeeded with an exception set, or failed with no
exception set. The error message contains the slot, the type name,
and the current exception (if an exception is set).

* Check the result of all slots using _Py_CheckSlotResult().
* No longer pass op_name to ternary_op() in release mode.
* Replace operator with dunder Python method name in error messages.
  For example, replace "*" with "__mul__".
* Fix compiler_exit_scope() when an exception is set.
* Fix bytearray.extend() when an exception is set: don't call
  bytearray_setslice() with an exception set.
Misc/NEWS.d/next/C API/2021-01-28-01-11-59.bpo-42979.JrGkrm.rst [new file with mode: 0644]
Objects/abstract.c
Objects/bytearrayobject.c
Python/compile.c