Commit d297f1ad authored by Georg Brandl's avatar Georg Brandl

#3117: backport r55087, fixes segfault with lambda (None,): None.

parent 7eb4a821
...@@ -277,6 +277,7 @@ l5 = lambda x, y, z=2: x + y + z ...@@ -277,6 +277,7 @@ l5 = lambda x, y, z=2: x + y + z
verify(l5(1, 2) == 5) verify(l5(1, 2) == 5)
verify(l5(1, 2, 3) == 6) verify(l5(1, 2, 3) == 6)
check_syntax("lambda x: x = 2") check_syntax("lambda x: x = 2")
check_syntax("lambda (None,): None")
### stmt: simple_stmt | compound_stmt ### stmt: simple_stmt | compound_stmt
# Tested below # Tested below
......
...@@ -249,6 +249,8 @@ PyAST_FromNode(const node *n, PyCompilerFlags *flags, const char *filename, ...@@ -249,6 +249,8 @@ PyAST_FromNode(const node *n, PyCompilerFlags *flags, const char *filename,
goto error; goto error;
asdl_seq_SET(stmts, 0, Pass(n->n_lineno, n->n_col_offset, asdl_seq_SET(stmts, 0, Pass(n->n_lineno, n->n_col_offset,
arena)); arena));
if (!asdl_seq_GET(stmts, 0))
goto error;
return Interactive(stmts, arena); return Interactive(stmts, arena);
} }
else { else {
...@@ -679,6 +681,8 @@ ast_for_arguments(struct compiling *c, const node *n) ...@@ -679,6 +681,8 @@ ast_for_arguments(struct compiling *c, const node *n)
if (NCH(ch) != 1) { if (NCH(ch) != 1) {
/* We have complex arguments, setup for unpacking. */ /* We have complex arguments, setup for unpacking. */
asdl_seq_SET(args, k++, compiler_complex_args(c, ch)); asdl_seq_SET(args, k++, compiler_complex_args(c, ch));
if (!asdl_seq_GET(args, k-1))
goto error;
} else { } else {
/* def foo((x)): setup for checking NAME below. */ /* def foo((x)): setup for checking NAME below. */
/* Loop because there can be many parens and tuple /* Loop because there can be many parens and tuple
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment