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:
|
static inline int _Py_EnterRecursiveCallTstate(PyThreadState *tstate, |
|
const char *where) { |
|
return (_Py_MakeRecCheck(tstate) && _Py_CheckRecursiveCall(tstate, where)); |
|
} |
|
|
|
static inline int _Py_EnterRecursiveCall(const char *where) { |
|
PyThreadState *tstate = _PyThreadState_GET(); |
|
return _Py_EnterRecursiveCallTstate(tstate, where); |
|
} |
Linked PRs