[Python-3000-checkins] r64234 - in python/branches/py3k: Modules/_multiprocessing/multiprocessing.c

benjamin.peterson python-3000-checkins at python.org
Fri Jun 13 17:36:43 CEST 2008


Author: benjamin.peterson
Date: Fri Jun 13 17:36:43 2008
New Revision: 64234

Log:
Merged revisions 64223-64224 via svnmerge from 
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.
........


Modified:
   python/branches/py3k/   (props changed)
   python/branches/py3k/Modules/_multiprocessing/multiprocessing.c

Modified: python/branches/py3k/Modules/_multiprocessing/multiprocessing.c
==============================================================================
--- python/branches/py3k/Modules/_multiprocessing/multiprocessing.c	(original)
+++ python/branches/py3k/Modules/_multiprocessing/multiprocessing.c	Fri Jun 13 17:36:43 2008
@@ -1,5 +1,5 @@
 /*
- * Extension module used by mutliprocessing package
+ * Extension module used by multiprocessing package
  *
  * multiprocessing.c
  *
@@ -228,7 +228,7 @@
 PyMODINIT_FUNC 
 PyInit__multiprocessing(void)
 {
-	PyObject *module, *temp;
+	PyObject *module, *temp, *value;
 
 	/* Initialize module */
 	module = PyModule_Create(&multiprocessing_module);
@@ -297,11 +297,13 @@
 	temp = PyDict_New();
 	if (!temp)
 		return NULL;
-	if (PyModule_AddObject(module, "flags", temp) < 0)
-		return NULL;
 
-#define ADD_FLAG(name) \
-       if (PyDict_SetItemString(temp, #name, Py_BuildValue("i", name)) < 0) return NULL
+#define ADD_FLAG(name)						  \
+	value = Py_BuildValue("i", name);			  \
+	if (value == NULL) { Py_DECREF(temp); return NULL; }	  \
+	if (PyDict_SetItemString(temp, #name, value) < 0) {	  \
+		Py_DECREF(temp); Py_DECREF(value); return NULL; }	  \
+	Py_DECREF(value)
 	
 #ifdef HAVE_SEM_OPEN
 	ADD_FLAG(HAVE_SEM_OPEN);
@@ -318,5 +320,9 @@
 #ifdef HAVE_BROKEN_SEM_UNLINK
 	ADD_FLAG(HAVE_BROKEN_SEM_UNLINK);
 #endif
+
+	if (PyModule_AddObject(module, "flags", temp) < 0)
+		return NULL;
+
         return module;
 }


More information about the Python-3000-checkins mailing list