PyMODINIT_FUNC\r
init_multiprocessing(void)\r
{\r
- PyObject *module, *temp;\r
+ PyObject *module, *temp, *value;\r
\r
/* Initialize module */\r
module = Py_InitModule("_multiprocessing", module_methods);\r
temp = PyDict_New();\r
if (!temp)\r
return;\r
- if (PyModule_AddObject(module, "flags", temp) < 0)\r
- return;\r
-\r
-#define ADD_FLAG(name) \\r
- if (PyDict_SetItemString(temp, #name, Py_BuildValue("i", name)) < 0) return\r
+#define ADD_FLAG(name) \\r
+ value = Py_BuildValue("i", name); \\r
+ if (value == NULL) { Py_DECREF(temp); return; } \\r
+ if (PyDict_SetItemString(temp, #name, value) < 0) { \\r
+ Py_DECREF(temp); Py_DECREF(value); return; } \\r
+ Py_DECREF(value)\r
\r
#ifdef HAVE_SEM_OPEN\r
ADD_FLAG(HAVE_SEM_OPEN);\r
#ifdef HAVE_BROKEN_SEM_UNLINK\r
ADD_FLAG(HAVE_BROKEN_SEM_UNLINK);\r
#endif\r
+ if (PyModule_AddObject(module, "flags", temp) < 0)\r
+ return;\r
}\r