summaryrefslogtreecommitdiffstats
path: root/Python/import.c
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2012-05-06 15:15:23 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2012-05-06 15:15:23 (GMT)
commitb78174c01071d4166a8f5dff47f5c46563dfd3d4 (patch)
tree4e4d6f816bf87a811cb99686bc88ee1db744e1be /Python/import.c
parent9d9dc8eba031d74bad4abcfd2b4244132adadd10 (diff)
downloadcpython-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.c4
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 {