]> granicus.if.org Git - python/commitdiff
Fix a refleak in PyString_Format.
authorGeorg Brandl <georg@python.org>
Mon, 26 Feb 2007 13:48:28 +0000 (13:48 +0000)
committerGeorg Brandl <georg@python.org>
Mon, 26 Feb 2007 13:48:28 +0000 (13:48 +0000)
Objects/stringobject.c

index d772e74c07e974b06c83fa663d0d75ef13d780e2..7212df904eb2192d32ebff0bde529ae3cecd3b38 100644 (file)
@@ -4780,10 +4780,13 @@ PyString_Format(PyObject *format, PyObject *args)
                                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 @@ PyString_Format(PyObject *format, PyObject *args)
                         if (dict && (argidx < arglen) && c != '%') {
                                 PyErr_SetString(PyExc_TypeError,
                                            "not all arguments converted during string formatting");
+                                Py_XDECREF(temp);
                                 goto error;
                         }
                        Py_XDECREF(temp);