From 218906919a30b7949697573d412c23cc09cb5f0f Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 23 Apr 2020 23:50:06 +0200 Subject: [PATCH] bpo-40048: Fix _PyCode_InitOpcache() error path 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. --- Python/ceval.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Python/ceval.c b/Python/ceval.c index 59765d850ba1db..c610419f24f580 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1297,7 +1297,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, 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 +=