Mercurial > cpython-lru_cache-weakref
changeset 47675:d5aa25bf9360 legacy-trunk
#3095: don't leak values from Py_BuildValue.
| author | Georg Brandl <georg@python.org> |
|---|---|
| date | Fri, 13 Jun 2008 06:56:50 +0000 |
| parents | 1464345a1968 |
| children | 38d0467f5ec7 |
| files | Modules/_multiprocessing/multiprocessing.c |
| diffstat | 1 files changed, 9 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/Modules/_multiprocessing/multiprocessing.c Fri Jun 13 06:03:25 2008 +0000 +++ b/Modules/_multiprocessing/multiprocessing.c Fri Jun 13 06:56:50 2008 +0000 @@ -215,7 +215,7 @@ PyMODINIT_FUNC init_multiprocessing(void) { - PyObject *module, *temp; + PyObject *module, *temp, *value; /* Initialize module */ module = Py_InitModule("_multiprocessing", module_methods); @@ -284,11 +284,12 @@ temp = PyDict_New(); if (!temp) return; - if (PyModule_AddObject(module, "flags", temp) < 0) - return; - -#define ADD_FLAG(name) \ - if (PyDict_SetItemString(temp, #name, Py_BuildValue("i", name)) < 0) return +#define ADD_FLAG(name) \ + value = Py_BuildValue("i", name); \ + if (value == NULL) { Py_DECREF(temp); return; } \ + if (PyDict_SetItemString(temp, #name, value) < 0) { \ + Py_DECREF(temp); Py_DECREF(value); return; } \ + Py_DECREF(value) #ifdef HAVE_SEM_OPEN ADD_FLAG(HAVE_SEM_OPEN); @@ -305,4 +306,6 @@ #ifdef HAVE_BROKEN_SEM_UNLINK ADD_FLAG(HAVE_BROKEN_SEM_UNLINK); #endif + if (PyModule_AddObject(module, "flags", temp) < 0) + return; }
