Skip to content

Commit 689c420

Browse files
authored
[3.15] gh-156466: fix cleanup on error in codegen_leave_annotations_scope (#156520)
1 parent 364db5d commit 689c420

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

‎Python/codegen.c‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -746,10 +746,11 @@ codegen_setup_annotations_scope(compiler *c, location loc,
746746
}
747747

748748
static int
749-
codegen_leave_annotations_scope(compiler *c, location loc)
749+
codegen_finish_annotations_scope(compiler *c, location loc)
750750
{
751751
ADDOP_IN_SCOPE(c, loc, RETURN_VALUE);
752752
PyCodeObject *co = _PyCompile_OptimizeAndAssemble(c, 1);
753+
_PyCompile_ExitScope(c);
753754
if (co == NULL) {
754755
return ERROR;
755756
}
@@ -783,7 +784,6 @@ codegen_leave_annotations_scope(compiler *c, location loc)
783784
}
784785
Py_SETREF(co->co_localsplusnames, new_names);
785786

786-
_PyCompile_ExitScope(c);
787787
int ret = codegen_make_closure(c, loc, co, 0);
788788
Py_DECREF(co);
789789
RETURN_IF_ERROR(ret);
@@ -886,7 +886,7 @@ codegen_process_deferred_annotations(compiler *c, location loc)
886886
Py_DECREF(deferred_anno);
887887
Py_DECREF(conditional_annotation_indices);
888888

889-
RETURN_IF_ERROR(codegen_leave_annotations_scope(c, loc));
889+
RETURN_IF_ERROR(codegen_finish_annotations_scope(c, loc));
890890
RETURN_IF_ERROR(codegen_nameop(
891891
c, loc,
892892
ste->ste_type == ClassBlock ? &_Py_ID(__annotate_func__) : &_Py_ID(__annotate__),
@@ -1192,7 +1192,7 @@ codegen_function_annotations(compiler *c, location loc,
11921192
c, codegen_annotations_in_scope(c, loc, args, returns, &annotations_len)
11931193
);
11941194
ADDOP_I_IN_SCOPE(c, loc, BUILD_MAP, annotations_len);
1195-
RETURN_IF_ERROR(codegen_leave_annotations_scope(c, loc));
1195+
RETURN_IF_ERROR(codegen_finish_annotations_scope(c, loc));
11961196
return MAKE_FUNCTION_ANNOTATE;
11971197
}
11981198
else {

0 commit comments

Comments
 (0)