diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2014-05-13 01:32:36 +0200 |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2014-05-13 01:32:36 +0200 |
commit | 1c6970fac994be2b1f9e3415e09c07ff01657563 (patch) | |
tree | 3f9cf62986cec2c97af62133482babb903e3c57f | |
parent | b0539b27d9a195b78a5713cc3d4aa98ea07dbc53 (diff) | |
download | cpython3-1c6970fac994be2b1f9e3415e09c07ff01657563.tar.gz |
Issue #21418: Fix a crash in the builtin function super() when called without
argument and without current frame (ex: embedded Python).
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Objects/typeobject.c | 11 |
2 files changed, 12 insertions, 2 deletions
@@ -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 7f59d5da40..ba106a139a 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -6919,9 +6919,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"); |