Using grep, I identified 3 instances in main where code checks if Py_EnterRecursiveCall(...) < 0 (which just returns _Py_EnterRecursiveCall(...)) or _Py_EnterRecursiveCall(...) < 0.
Py_EnterRecursiveCall()documentation only guarantees that a nonzero value is returned in the event of an error.- The actual implementation can't return a negative value:
| staticinlineint_Py_EnterRecursiveCallTstate(PyThreadState*tstate, |
| constchar*where) { |
| return (_Py_MakeRecCheck(tstate) &&_Py_CheckRecursiveCall(tstate, where)); |
| } |
| |
| staticinlineint_Py_EnterRecursiveCall(constchar*where) { |
| PyThreadState*tstate=_PyThreadState_GET(); |
| return_Py_EnterRecursiveCallTstate(tstate, where); |
| } |
Linked PRs
Using
grep, I identified 3 instances inmainwhere code checks ifPy_EnterRecursiveCall(...) < 0(which just returns_Py_EnterRecursiveCall(...)) or_Py_EnterRecursiveCall(...) < 0.Py_EnterRecursiveCall()documentation only guarantees that a nonzero value is returned in the event of an error.cpython/Include/internal/pycore_ceval.h
Lines 130 to 138 in 7644935
Linked PRs