diff options
| author | Victor Stinner <vstinner@python.org> | 2020-04-24 00:43:18 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-24 00:43:18 (GMT) |
| commit | 25104949a5a60ff86c10691e184ce2ecb500159b (patch) | |
| tree | fb8ff45bfbe89166981741f469903041f53c0a91 /Python | |
| parent | 9f27dd3e16e2832fa8c375bfc4493de75b39d53f (diff) | |
| download | cpython-25104949a5a60ff86c10691e184ce2ecb500159b.zip cpython-25104949a5a60ff86c10691e184ce2ecb500159b.tar.gz cpython-25104949a5a60ff86c10691e184ce2ecb500159b.tar.bz2 | |
bpo-40048: Fix _PyCode_InitOpcache() error path (GH-19691)
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.
Diffstat (limited to 'Python')
| -rw-r--r-- | Python/ceval.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index 59765d8..c610419 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 += |
