summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2018-03-10 19:32:49 (GMT)
committerGitHub <noreply@github.com>2018-03-10 19:32:49 (GMT)
commitd0826340d96e0953793b86d0b8475d2f43a280b6 (patch)
tree4d4170934470eed316c616e4d14fd4d73c3f71cd /Python
parent017e9fda922a143ac9f1601cbde05e80214852d2 (diff)
downloadcpython-d0826340d96e0953793b86d0b8475d2f43a280b6.zip
cpython-d0826340d96e0953793b86d0b8475d2f43a280b6.tar.gz
cpython-d0826340d96e0953793b86d0b8475d2f43a280b6.tar.bz2
[3.7] bpo-33041: Add missed error checks when compile "async for" (GH-6053) (GH-6060)
and remove redundant code. (cherry picked from commit 67ee07795bcd84b679c000780212d4d81a1490a3) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> (cherry picked from commit 9e94c0d3c78d1bc582c865240ed9353fe9689b2a) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Diffstat (limited to 'Python')
-rw-r--r--Python/compile.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/Python/compile.c b/Python/compile.c
index 3b8f9bb..aae3300 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -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) {
@@ -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;
@@ -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);
@@ -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;
@@ -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;
}
@@ -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);