◐ Shell
clean mode source ↗

[3.6] [3.7] bpo-33041: Add missed error checks when compile "async for" (GH-6053) (GH-6060) by miss-islington · Pull Request #6062 · python/cpython

Expand Up @@ -2189,7 +2189,7 @@ compiler_async_for(struct compiler *c, stmt_ty s) _Py_IDENTIFIER(StopAsyncIteration);
basicblock *try, *except, *end, *after_try, *try_cleanup, *after_loop, *after_loop_else; *after_loop_else;
PyObject *stop_aiter_error = _PyUnicode_FromId(&PyId_StopAsyncIteration); if (stop_aiter_error == NULL) { Expand All @@ -2201,14 +2201,14 @@ compiler_async_for(struct compiler *c, stmt_ty s) end = compiler_new_block(c); after_try = compiler_new_block(c); try_cleanup = compiler_new_block(c); after_loop = compiler_new_block(c); after_loop_else = compiler_new_block(c);
if (try == NULL || except == NULL || end == NULL || after_try == NULL || try_cleanup == NULL) || after_try == NULL || try_cleanup == NULL || after_loop_else == NULL) return 0;
ADDOP_JREL(c, SETUP_LOOP, after_loop); ADDOP_JREL(c, SETUP_LOOP, end); if (!compiler_push_fblock(c, LOOP, try)) return 0;
Expand Down Expand Up @@ -2257,9 +2257,6 @@ compiler_async_for(struct compiler *c, stmt_ty s) ADDOP(c, POP_BLOCK); /* for SETUP_LOOP */ compiler_pop_fblock(c, LOOP, try);
compiler_use_next_block(c, after_loop); ADDOP_JABS(c, JUMP_ABSOLUTE, end);
compiler_use_next_block(c, after_loop_else); VISIT_SEQ(c, stmt, s->v.For.orelse);
Expand Down Expand Up @@ -3753,7 +3750,7 @@ compiler_async_comprehension_generator(struct compiler *c, _Py_IDENTIFIER(StopAsyncIteration);
comprehension_ty gen; basicblock *anchor, *skip, *if_cleanup, *try, basicblock *anchor, *if_cleanup, *try, *after_try, *except, *try_cleanup; Py_ssize_t i, n;
Expand All @@ -3766,13 +3763,12 @@ compiler_async_comprehension_generator(struct compiler *c, after_try = compiler_new_block(c); try_cleanup = compiler_new_block(c); except = compiler_new_block(c); skip = compiler_new_block(c); if_cleanup = compiler_new_block(c); anchor = compiler_new_block(c);
if (skip == NULL || if_cleanup == NULL || anchor == NULL || if (if_cleanup == NULL || anchor == NULL || try == NULL || after_try == NULL || except == NULL || after_try == NULL) { except == NULL || try_cleanup == NULL) { return 0; }
Expand Down Expand Up @@ -3866,8 +3862,6 @@ compiler_async_comprehension_generator(struct compiler *c, default: return 0; }
compiler_use_next_block(c, skip); } compiler_use_next_block(c, if_cleanup); ADDOP_JABS(c, JUMP_ABSOLUTE, try); Expand Down