mirror of https://github.com/python/cpython.git
bpo-29655: Fixed possible reference leaks in `import *`. (#301)
Patch by Matthias Bussonnier.
This commit is contained in:
parent
53c1892dc3
commit
160edb4357
|
@ -2810,13 +2810,16 @@ _PyEval_EvalFrameDefault(PyFrameObject *f, int throwflag)
|
||||||
TARGET(IMPORT_STAR) {
|
TARGET(IMPORT_STAR) {
|
||||||
PyObject *from = POP(), *locals;
|
PyObject *from = POP(), *locals;
|
||||||
int err;
|
int err;
|
||||||
if (PyFrame_FastToLocalsWithError(f) < 0)
|
if (PyFrame_FastToLocalsWithError(f) < 0) {
|
||||||
|
Py_DECREF(from);
|
||||||
goto error;
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
locals = f->f_locals;
|
locals = f->f_locals;
|
||||||
if (locals == NULL) {
|
if (locals == NULL) {
|
||||||
PyErr_SetString(PyExc_SystemError,
|
PyErr_SetString(PyExc_SystemError,
|
||||||
"no locals found during 'import *'");
|
"no locals found during 'import *'");
|
||||||
|
Py_DECREF(from);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
err = import_all_from(locals, from);
|
err = import_all_from(locals, from);
|
||||||
|
|
Loading…
Reference in New Issue