]> granicus.if.org Git - python/commitdiff
Fix too early decrefs.
authorAntoine Pitrou <solipsis@pitrou.net>
Sun, 6 May 2012 15:15:23 +0000 (17:15 +0200)
committerAntoine Pitrou <solipsis@pitrou.net>
Sun, 6 May 2012 15:15:23 +0000 (17:15 +0200)
Python/import.c

index ccba1066d24783309af8e8e0adfe5d28803f50bb..fd42a892a164fb036ed7624e775635a7447e9e74 100644 (file)
@@ -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 {