From 1eba8bae9223600677dfa3a4ce8b7e4d2b8fd00d Mon Sep 17 00:00:00 2001 From: Mark Shannon Date: Wed, 21 Aug 2024 12:44:56 +0100 Subject: GH-123185: Check for `NULL` after calling `_PyEvalFramePushAndInit` (GH-123194) --- Python/bytecodes.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'Python/bytecodes.c') diff --git a/Python/bytecodes.c b/Python/bytecodes.c index ec0f6ab8fde..3edd3746541 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -3584,8 +3584,12 @@ dummy_func( args[-1] = self; init_frame = _PyEvalFramePushAndInit( tstate, init_func, NULL, args-1, oparg+1, NULL, shim); - frame->return_offset = 1 + INLINE_CACHE_ENTRIES_CALL; SYNC_SP(); + if (init_frame == NULL) { + _PyEval_FrameClearAndPop(tstate, shim); + ERROR_NO_POP(); + } + frame->return_offset = 1 + INLINE_CACHE_ENTRIES_CALL; /* Account for pushing the extra frame. * We don't check recursion depth here, * as it will be checked after start_frame */ -- cgit v1.2.3