(Merge 3.4) Issue #21418: Fix a crash in the builtin function super() when
called without argument and without current frame (ex: embedded Python).
This commit is contained in:
commit
470cf8dfbe
|
@ -10,6 +10,9 @@ Release date: TBA
|
||||||
Core and Builtins
|
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
|
- Issue #21425: Fix flushing of standard streams in the interactive
|
||||||
interpreter.
|
interpreter.
|
||||||
|
|
||||||
|
|
|
@ -6929,9 +6929,16 @@ super_init(PyObject *self, PyObject *args, PyObject *kwds)
|
||||||
if (type == NULL) {
|
if (type == NULL) {
|
||||||
/* Call super(), without args -- fill in from __class__
|
/* Call super(), without args -- fill in from __class__
|
||||||
and first local variable on the stack. */
|
and first local variable on the stack. */
|
||||||
PyFrameObject *f = PyThreadState_GET()->frame;
|
PyFrameObject *f;
|
||||||
PyCodeObject *co = f->f_code;
|
PyCodeObject *co;
|
||||||
Py_ssize_t i, n;
|
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) {
|
if (co == NULL) {
|
||||||
PyErr_SetString(PyExc_RuntimeError,
|
PyErr_SetString(PyExc_RuntimeError,
|
||||||
"super(): no code object");
|
"super(): no code object");
|
||||||
|
|
Loading…
Reference in New Issue