diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2012-05-06 15:15:23 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2012-05-06 15:15:23 (GMT) |
commit | b78174c01071d4166a8f5dff47f5c46563dfd3d4 (patch) | |
tree | 4e4d6f816bf87a811cb99686bc88ee1db744e1be /Python/import.c | |
parent | 9d9dc8eba031d74bad4abcfd2b4244132adadd10 (diff) | |
download | cpython-b78174c01071d4166a8f5dff47f5c46563dfd3d4.zip cpython-b78174c01071d4166a8f5dff47f5c46563dfd3d4.tar.gz cpython-b78174c01071d4166a8f5dff47f5c46563dfd3d4.tar.bz2 |
Fix too early decrefs.
Diffstat (limited to 'Python/import.c')
-rw-r--r-- | Python/import.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/Python/import.c b/Python/import.c index ccba106..fd42a89 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1639,7 +1639,6 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, if (level == 0) { final_mod = PyDict_GetItem(interp->modules, front); - Py_DECREF(front); if (final_mod == NULL) { PyErr_Format(PyExc_KeyError, "%R not in sys.modules as expected", front); @@ -1647,6 +1646,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, else { Py_INCREF(final_mod); } + Py_DECREF(front); } else { Py_ssize_t cut_off = PyUnicode_GET_LENGTH(name) - @@ -1660,7 +1660,6 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, } final_mod = PyDict_GetItem(interp->modules, to_return); - Py_DECREF(to_return); if (final_mod == NULL) { PyErr_Format(PyExc_KeyError, "%R not in sys.modules as expected", @@ -1669,6 +1668,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, else { Py_INCREF(final_mod); } + Py_DECREF(to_return); } } else { |