[Python-checkins] r52105 - python/branches/release24-maint/Python/import.c

andrew.kuchling python-checkins at python.org
Tue Oct 3 20:32:26 CEST 2006


Author: andrew.kuchling
Date: Tue Oct  3 20:32:25 2006
New Revision: 52105

Modified:
   python/branches/release24-maint/Python/import.c
Log:
[Backport r50678 | neal.norwitz]

Fix memory leak under some conditions.

Reported by Klocwork, #98.


Modified: python/branches/release24-maint/Python/import.c
==============================================================================
--- python/branches/release24-maint/Python/import.c	(original)
+++ python/branches/release24-maint/Python/import.c	Tue Oct  3 20:32:25 2006
@@ -1847,11 +1847,10 @@
 	if (co == NULL)
 		return -1;
 	if (!PyCode_Check(co)) {
-		Py_DECREF(co);
 		PyErr_Format(PyExc_TypeError,
 			     "frozen object %.200s is not a code object",
 			     name);
-		return -1;
+		goto err_return;
 	}
 	if (ispackage) {
 		/* Set __path__ to the package name */
@@ -1859,22 +1858,25 @@
 		int err;
 		m = PyImport_AddModule(name);
 		if (m == NULL)
-			return -1;
+			goto err_return;
 		d = PyModule_GetDict(m);
 		s = PyString_InternFromString(name);
 		if (s == NULL)
-			return -1;
+			goto err_return;
 		err = PyDict_SetItemString(d, "__path__", s);
 		Py_DECREF(s);
 		if (err != 0)
-			return err;
+			goto err_return;
 	}
 	m = PyImport_ExecCodeModuleEx(name, co, "<frozen>");
-	Py_DECREF(co);
 	if (m == NULL)
-		return -1;
+		goto err_return;
+	Py_DECREF(co);
 	Py_DECREF(m);
 	return 1;
+err_return:
+	Py_DECREF(co);
+	return -1;
 }
 
 


More information about the Python-checkins mailing list