From b3e7bfde8047498181a266712b3c30961f6037ec Mon Sep 17 00:00:00 2001 From: Irit Katriel Date: Thu, 12 Sep 2024 19:36:38 +0100 Subject: [PATCH] gh-124019: do not call codegen_annotations_in_scope if there are no annotations --- Python/codegen.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/Python/codegen.c b/Python/codegen.c index fd2260a538f76d..99e494c3bd7920 100644 --- a/Python/codegen.c +++ b/Python/codegen.c @@ -1003,26 +1003,22 @@ codegen_annotations(compiler *c, location loc, PySTEntryObject *ste; RETURN_IF_ERROR(_PySymtable_LookupOptional(SYMTABLE(c), args, &ste)); assert(ste != NULL); - bool annotations_used = ste->ste_annotations_used; - int err = annotations_used ? - codegen_setup_annotations_scope(c, loc, (void *)args, ste->ste_name) : SUCCESS; - Py_DECREF(ste); - RETURN_IF_ERROR(err); - - if (codegen_annotations_in_scope(c, loc, args, returns, &annotations_len) < 0) { - if (annotations_used) { - _PyCompile_ExitScope(c); - } - return ERROR; - } - - if (annotations_used) { + if (ste->ste_annotations_used) { + int err = codegen_setup_annotations_scope(c, loc, (void *)args, ste->ste_name); + Py_DECREF(ste); + RETURN_IF_ERROR(err); + RETURN_IF_ERROR_IN_SCOPE( + c, codegen_annotations_in_scope(c, loc, args, returns, &annotations_len) + ); RETURN_IF_ERROR( codegen_leave_annotations_scope(c, loc, annotations_len) ); return MAKE_FUNCTION_ANNOTATE; } + else { + Py_DECREF(ste); + } return 0; }