From: Victor Stinner Date: Fri, 24 Apr 2020 01:07:20 +0000 (+0200) Subject: bpo-40048: Fix _PyCode_InitOpcache() error path (GH-19691) (GH-19698) X-Git-Tag: v3.8.3rc1~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d9df63deab78f70061a5a24c1f92e6d389fc45f7;p=thirdparty%2FPython%2Fcpython.git bpo-40048: Fix _PyCode_InitOpcache() error path (GH-19691) (GH-19698) If _PyCode_InitOpcache() fails in _PyEval_EvalFrameDefault(), use "goto exit_eval_frame;" rather than "return NULL;" to exit the function in a consistent state. For example, tstate->frame is now reset properly. (cherry picked from commit 25104949a5a60ff86c10691e184ce2ecb500159b) --- diff --git a/Python/ceval.c b/Python/ceval.c index 2db6e6bf8ebd..1873e37cf608 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1159,7 +1159,7 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag) co->co_opcache_flag++; if (co->co_opcache_flag == OPCACHE_MIN_RUNS) { if (_PyCode_InitOpcache(co) < 0) { - return NULL; + goto exit_eval_frame; } #if OPCACHE_STATS opcache_code_objects_extra_mem +=