[Python-checkins] r42794 - python/trunk/Python/pythonrun.c

brett.cannon python-checkins at python.org
Thu Mar 2 19:34:59 CET 2006


Author: brett.cannon
Date: Thu Mar  2 19:34:57 2006
New Revision: 42794

Modified:
   python/trunk/Python/pythonrun.c
Log:
Fix refleak in PyErr_Display().


Modified: python/trunk/Python/pythonrun.c
==============================================================================
--- python/trunk/Python/pythonrun.c	(original)
+++ python/trunk/Python/pythonrun.c	Thu Mar  2 19:34:57 2006
@@ -1115,6 +1115,7 @@
 				err = PyFile_WriteString("<unknown>", f);
 			else {
 				char* modstr = PyString_AsString(moduleName);
+				Py_DECREF(moduleName);
 				if (modstr && strcmp(modstr, "exceptions"))
 				{
 					err = PyFile_WriteString(modstr, f);
@@ -1130,21 +1131,19 @@
 		}
 		else
 			err = PyFile_WriteObject(exception, f, Py_PRINT_RAW);
-		if (err == 0) {
-			if (value != Py_None) {
-				PyObject *s = PyObject_Str(value);
-				/* only print colon if the str() of the
-				   object is not the empty string
-				*/
-				if (s == NULL)
-					err = -1;
-				else if (!PyString_Check(s) ||
-					 PyString_GET_SIZE(s) != 0)
-					err = PyFile_WriteString(": ", f);
-				if (err == 0)
-				  err = PyFile_WriteObject(s, f, Py_PRINT_RAW);
-				Py_XDECREF(s);
-			}
+		if (err == 0 && (value != Py_None)) {
+			PyObject *s = PyObject_Str(value);
+			/* only print colon if the str() of the
+			   object is not the empty string
+			*/
+			if (s == NULL)
+				err = -1;
+			else if (!PyString_Check(s) ||
+				 PyString_GET_SIZE(s) != 0)
+				err = PyFile_WriteString(": ", f);
+			if (err == 0)
+			  err = PyFile_WriteObject(s, f, Py_PRINT_RAW);
+			Py_XDECREF(s);
 		}
 		if (err == 0)
 			err = PyFile_WriteString("\n", f);


More information about the Python-checkins mailing list