You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is an optimization in gen_close which attempts to shortcut the case where a sub-generator is being closed, and it is wrapped in only one try block (which is presumed to be for the StopIteration so can be ignored).
However, there is a bug there where the exception depth is taken from frame->prev_instr[0].op.code, where it should be frame->prev_instr[0].op.arg.
At the moment this optimization is not doing anything because exception_handler_depth is never 1, it is either 118 (opcode of YIELD_VALUE) or 241 (opcode of INSTRUMENTED_YIELD_VALUE). If one of those opcodes will happen to be mapped to 1, then this code will have some impact but obviously not the intended one.
There is an optimization in gen_close which attempts to shortcut the case where a sub-generator is being closed, and it is wrapped in only one try block (which is presumed to be for the
StopIteration
so can be ignored).However, there is a bug there where the exception depth is taken from
frame->prev_instr[0].op.code
, where it should beframe->prev_instr[0].op.arg
.At the moment this optimization is not doing anything because
exception_handler_depth
is never 1, it is either 118 (opcode ofYIELD_VALUE
) or 241 (opcode ofINSTRUMENTED_YIELD_VALUE
). If one of those opcodes will happen to be mapped to 1, then this code will have some impact but obviously not the intended one.CC @markshannon
The text was updated successfully, but these errors were encountered: