From: Brandt Bucher Date: Sun, 8 Mar 2020 03:44:18 +0000 (-0800) Subject: bpo-39890: Don't mutate the AST when compiling starred assignments (GH-18833) X-Git-Tag: v3.9.0a5~148 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d5aa2e941ccc44412b95d0e3f0a1789fbcccf403;p=thirdparty%2FPython%2Fcpython.git bpo-39890: Don't mutate the AST when compiling starred assignments (GH-18833) --- diff --git a/Python/compile.c b/Python/compile.c index f603e3d29e53..f228e16079b2 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -3765,7 +3765,6 @@ assignment_helper(struct compiler *c, asdl_seq *elts) "star-unpacking assignment"); ADDOP_I(c, UNPACK_EX, (i + ((n-i-1) << 8))); seen_star = 1; - asdl_seq_SET(elts, i, elt->v.Starred.value); } else if (elt->kind == Starred_kind) { return compiler_error(c, @@ -3775,7 +3774,10 @@ assignment_helper(struct compiler *c, asdl_seq *elts) if (!seen_star) { ADDOP_I(c, UNPACK_SEQUENCE, n); } - VISIT_SEQ(c, expr, elts); + for (i = 0; i < n; i++) { + expr_ty elt = asdl_seq_GET(elts, i); + VISIT(c, expr, elt->kind != Starred_kind ? elt : elt->v.Starred.value); + } return 1; }