[3.14] GH-135171: Fix generator expressions one last time (hopefully) (GH-135225)

* Add NULL check to FOR_ITER

* Move GET_ITER back to genexpr creation
This commit is contained in:
Mark Shannon 2025-06-09 11:04:23 +01:00 committed by GitHub
parent 1497866198
commit a5274cd215
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 92 additions and 19 deletions

View file

@ -4273,8 +4273,17 @@
_PyStackRef next;
iter = stack_pointer[-1];
PyObject *iter_o = PyStackRef_AsPyObjectBorrow(iter);
iternextfunc func = Py_TYPE(iter_o)->tp_iternext;
if (func == NULL) {
_PyFrame_SetStackPointer(frame, stack_pointer);
_PyErr_Format(tstate, PyExc_TypeError,
"'%.100s' object is not an iterator",
Py_TYPE(iter_o)->tp_name);
stack_pointer = _PyFrame_GetStackPointer(frame);
JUMP_TO_ERROR();
}
_PyFrame_SetStackPointer(frame, stack_pointer);
PyObject *next_o = (*Py_TYPE(iter_o)->tp_iternext)(iter_o);
PyObject *next_o = func(iter_o);
stack_pointer = _PyFrame_GetStackPointer(frame);
if (next_o == NULL) {
if (_PyErr_Occurred(tstate)) {