[Python-checkins] r60084 - python/trunk/Python/modsupport.c

georg.brandl python-checkins at python.org
Sat Jan 19 19:02:46 CET 2008


Author: georg.brandl
Date: Sat Jan 19 19:02:46 2008
New Revision: 60084

Modified:
   python/trunk/Python/modsupport.c
Log:
#1782: don't leak in error case in PyModule_AddXxxConstant. Patch by Hrvoje Nikšić.


Modified: python/trunk/Python/modsupport.c
==============================================================================
--- python/trunk/Python/modsupport.c	(original)
+++ python/trunk/Python/modsupport.c	Sat Jan 19 19:02:46 2008
@@ -621,11 +621,23 @@
 int 
 PyModule_AddIntConstant(PyObject *m, const char *name, long value)
 {
-	return PyModule_AddObject(m, name, PyInt_FromLong(value));
+	PyObject *o = PyInt_FromLong(value);
+	if (!o)
+		return -1;
+	if (PyModule_AddObject(m, name, o) == 0)
+		return 0;
+	Py_DECREF(o);
+	return -1;
 }
 
 int 
 PyModule_AddStringConstant(PyObject *m, const char *name, const char *value)
 {
-	return PyModule_AddObject(m, name, PyString_FromString(value));
+	PyObject *o = PyString_FromString(value);
+	if (!o)
+		return -1;
+	if (PyModule_AddObject(m, name, o) == 0)
+		return 0;
+	Py_DECREF(o);
+	return -1;
 }


More information about the Python-checkins mailing list