summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Python/compile.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/Python/compile.c b/Python/compile.c
index ed50f7e..cd936a3 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -3780,22 +3780,28 @@ struct symtable *
PyNode_CompileSymtable(node *n, char *filename)
{
struct symtable *st;
+ PyFutureFeatures *ff;
+ ff = PyNode_Future(n, filename);
+ if (ff == NULL)
+ return NULL;
st = symtable_init();
if (st == NULL)
return NULL;
- assert(st->st_symbols != NULL);
+ st->st_future = ff;
symtable_enter_scope(st, TOP, TYPE(n), n->n_lineno);
- if (st->st_errors > 0) {
- PySymtable_Free(st);
- return NULL;
- }
+ if (st->st_errors > 0)
+ goto fail;
symtable_node(st, n);
- if (st->st_errors > 0) {
- PySymtable_Free(st);
- return NULL;
- }
+ if (st->st_errors > 0)
+ goto fail;
+
return st;
+ fail:
+ PyMem_Free((void *)ff);
+ st->st_future = NULL;
+ PySymtable_Free(st);
+ return NULL;
}
static PyCodeObject *