Skip to content

Commit fc80beb

Browse files
author
georg.brandl
committed
#3378: in case of no memory, don't leak even more memory. :)
git-svn-id: http://svn.python.org/projects/python/trunk@65131 6015fed2-1504-0410-9fe1-9d1591cc4771
1 parent 30e2d5e commit fc80beb

1 file changed

Lines changed: 7 additions & 6 deletions

File tree

Python/pythonrun.c

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1553,10 +1553,10 @@ err_input(perrdetail *err)
15531553
case E_INTR:
15541554
if (!PyErr_Occurred())
15551555
PyErr_SetNone(PyExc_KeyboardInterrupt);
1556-
return;
1556+
goto cleanup;
15571557
case E_NOMEM:
15581558
PyErr_NoMemory();
1559-
return;
1559+
goto cleanup;
15601560
case E_EOF:
15611561
msg = "unexpected EOF while parsing";
15621562
break;
@@ -1601,17 +1601,18 @@ err_input(perrdetail *err)
16011601
}
16021602
v = Py_BuildValue("(ziiz)", err->filename,
16031603
err->lineno, err->offset, err->text);
1604-
if (err->text != NULL) {
1605-
PyObject_FREE(err->text);
1606-
err->text = NULL;
1607-
}
16081604
w = NULL;
16091605
if (v != NULL)
16101606
w = Py_BuildValue("(sO)", msg, v);
16111607
Py_XDECREF(u);
16121608
Py_XDECREF(v);
16131609
PyErr_SetObject(errtype, w);
16141610
Py_XDECREF(w);
1611+
cleanup:
1612+
if (err->text != NULL) {
1613+
PyObject_FREE(err->text);
1614+
err->text = NULL;
1615+
}
16151616
}
16161617

16171618
/* Print fatal error message and abort */

0 commit comments

Comments
 (0)