diff Objects/stringobject.c @ 40924:03883acb650b

Fix a refleak in PyString_Format.
author Georg Brandl <georg@python.org>
date Mon, 26 Feb 2007 13:48:28 +0000
parents f2f0b41f270d
children d1c3dd184e38
line wrap: on
line diff
--- a/Objects/stringobject.c	Mon Feb 26 12:28:57 2007 +0000
+++ b/Objects/stringobject.c	Mon Feb 26 13:48:28 2007 +0000
@@ -4780,10 +4780,13 @@
 				reslen += rescnt;
 				if (reslen < 0) {
 					Py_DECREF(result);
+					Py_XDECREF(temp);
 					return PyErr_NoMemory();
 				}
-				if (_PyString_Resize(&result, reslen) < 0)
+				if (_PyString_Resize(&result, reslen) < 0) {
+					Py_XDECREF(temp);
 					return NULL;
+				}
 				res = PyString_AS_STRING(result)
 					+ reslen - rescnt;
 			}
@@ -4834,6 +4837,7 @@
                         if (dict && (argidx < arglen) && c != '%') {
                                 PyErr_SetString(PyExc_TypeError,
                                            "not all arguments converted during string formatting");
+                                Py_XDECREF(temp);
                                 goto error;
                         }
 			Py_XDECREF(temp);