From: Irit Katriel <1055913+iritkatriel@users.noreply.github.com> Date: Thu, 12 Sep 2024 19:24:15 +0000 (+0100) Subject: gh-124019: do not call codegen_annotations_in_scope if there are no annotations ... X-Git-Tag: v3.14.0a1~503 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6e06e01881dcffbeef5baac0c112ffb14cfa0b27;p=thirdparty%2FPython%2Fcpython.git gh-124019: do not call codegen_annotations_in_scope if there are no annotations (#124020) --- diff --git a/Python/codegen.c b/Python/codegen.c index 9ce4e1fb1f6c..2ca5db1fc6ad 100644 --- a/Python/codegen.c +++ b/Python/codegen.c @@ -1002,26 +1002,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; }