Mercurial > cpython-lru_cache-weakref
diff Python/import.c @ 39099:775f85b98e65 legacy-trunk
Fix memory leak under some conditions.
Reported by Klocwork, #98.
| author | Neal Norwitz <nnorwitz@gmail.com> |
|---|---|
| date | Sun, 16 Jul 2006 02:17:36 +0000 |
| parents | 2c3ec720aa7b |
| children | f2031f15d99d |
line wrap: on
line diff
--- a/Python/import.c Sun Jul 16 02:15:27 2006 +0000 +++ b/Python/import.c Sun Jul 16 02:17:36 2006 +0000 @@ -1906,11 +1906,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 */ @@ -1918,22 +1917,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>"); + if (m == NULL) + goto err_return; Py_DECREF(co); - if (m == NULL) - return -1; Py_DECREF(m); return 1; +err_return: + Py_DECREF(co); + return -1; }
