/*\r
- * Extension module used by mutliprocessing package\r
+ * Extension module used by multiprocessing package\r
*\r
* multiprocessing.c\r
*\r
PyMODINIT_FUNC \r
PyInit__multiprocessing(void)\r
{\r
- PyObject *module, *temp;\r
+ PyObject *module, *temp, *value;\r
\r
/* Initialize module */\r
module = PyModule_Create(&multiprocessing_module);\r
temp = PyDict_New();\r
if (!temp)\r
return NULL;\r
- if (PyModule_AddObject(module, "flags", temp) < 0)\r
- return NULL;\r
\r
-#define ADD_FLAG(name) \\r
- if (PyDict_SetItemString(temp, #name, Py_BuildValue("i", name)) < 0) return NULL\r
+#define ADD_FLAG(name) \\r
+ value = Py_BuildValue("i", name); \\r
+ if (value == NULL) { Py_DECREF(temp); return NULL; } \\r
+ if (PyDict_SetItemString(temp, #name, value) < 0) { \\r
+ Py_DECREF(temp); Py_DECREF(value); return NULL; } \\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
+\r
+ if (PyModule_AddObject(module, "flags", temp) < 0)\r
+ return NULL;\r
+\r
return module;\r
}\r