]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
#3378: in case of no memory, don't leak even more memory. :)
authorGeorg Brandl <georg@python.org>
Sat, 19 Jul 2008 10:08:55 +0000 (10:08 +0000)
committerGeorg Brandl <georg@python.org>
Sat, 19 Jul 2008 10:08:55 +0000 (10:08 +0000)
Python/pythonrun.c

index caa7ba8fbd0b9b1b7891cb53f45c372726b4a4df..bd4f494425c4db87ce4cfc8b5a5504bb057bbdef 100644 (file)
@@ -1553,10 +1553,10 @@ err_input(perrdetail *err)
        case E_INTR:
                if (!PyErr_Occurred())
                        PyErr_SetNone(PyExc_KeyboardInterrupt);
-               return;
+               goto cleanup;
        case E_NOMEM:
                PyErr_NoMemory();
-               return;
+               goto cleanup;
        case E_EOF:
                msg = "unexpected EOF while parsing";
                break;
@@ -1601,10 +1601,6 @@ err_input(perrdetail *err)
        }
        v = Py_BuildValue("(ziiz)", err->filename,
                          err->lineno, err->offset, err->text);
-       if (err->text != NULL) {
-               PyObject_FREE(err->text);
-               err->text = NULL;
-       }
        w = NULL;
        if (v != NULL)
                w = Py_BuildValue("(sO)", msg, v);
@@ -1612,6 +1608,11 @@ err_input(perrdetail *err)
        Py_XDECREF(v);
        PyErr_SetObject(errtype, w);
        Py_XDECREF(w);
+cleanup:
+       if (err->text != NULL) {
+               PyObject_FREE(err->text);
+               err->text = NULL;
+       }
 }
 
 /* Print fatal error message and abort */