diff --git a/Misc/NEWS b/Misc/NEWS index 62c4b397d1e..7366cd84531 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,9 @@ Release date: TBA Core and Builtins ----------------- +- Issue #21418: Fix a crash in the builtin function super() when called without + argument and without current frame (ex: embedded Python). + - Issue #21425: Fix flushing of standard streams in the interactive interpreter. diff --git a/Objects/typeobject.c b/Objects/typeobject.c index be9747a166c..c759204dc00 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -6929,9 +6929,16 @@ super_init(PyObject *self, PyObject *args, PyObject *kwds) if (type == NULL) { /* Call super(), without args -- fill in from __class__ and first local variable on the stack. */ - PyFrameObject *f = PyThreadState_GET()->frame; - PyCodeObject *co = f->f_code; + PyFrameObject *f; + PyCodeObject *co; Py_ssize_t i, n; + f = PyThreadState_GET()->frame; + if (f == NULL) { + PyErr_SetString(PyExc_RuntimeError, + "super(): no current frame"); + return -1; + } + co = f->f_code; if (co == NULL) { PyErr_SetString(PyExc_RuntimeError, "super(): no code object");