Merged revisions 64223-64224 via svnmerge from
authorBenjamin Peterson <benjamin@python.org>
Fri, 13 Jun 2008 15:36:43 +0000 (15:36 +0000)
committerBenjamin Peterson <benjamin@python.org>
Fri, 13 Jun 2008 15:36:43 +0000 (15:36 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r64223 | georg.brandl | 2008-06-13 01:56:50 -0500 (Fri, 13 Jun 2008) | 2 lines

  #3095: don't leak values from Py_BuildValue.
........
  r64224 | georg.brandl | 2008-06-13 02:08:48 -0500 (Fri, 13 Jun 2008) | 2 lines

  Typo.
........

Modules/_multiprocessing/multiprocessing.c

index 19d12ae646053976bf693eb14860804389bbe3a2..9e6463556ecd8ac61d29a7b53f777ffce52f745d 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * Extension module used by mutliprocessing package\r
+ * Extension module used by multiprocessing package\r
  *\r
  * multiprocessing.c\r
  *\r
@@ -228,7 +228,7 @@ static struct PyModuleDef multiprocessing_module = {
 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
@@ -297,11 +297,13 @@ PyInit__multiprocessing(void)
        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
@@ -318,5 +320,9 @@ PyInit__multiprocessing(void)
 #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