diff options
author | Barry Warsaw <barry@python.org> | 1999-01-27 16:39:40 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 1999-01-27 16:39:40 (GMT) |
commit | c80baa3365d0c87f419020e3e1f0488d8bae8eb5 (patch) | |
tree | 873de298333235cd6f2b44cdd8deab4d652f227d | |
parent | 54892c4b2cac50cc698be2ebede663b781cf4a37 (diff) | |
download | cpython-c80baa3365d0c87f419020e3e1f0488d8bae8eb5.zip cpython-c80baa3365d0c87f419020e3e1f0488d8bae8eb5.tar.gz cpython-c80baa3365d0c87f419020e3e1f0488d8bae8eb5.tar.bz2 |
err_input(): Nailed a small memory leak. If the error is E_INTR, the
v temporary variable was never decref'd. Test this by starting up the
interpreter, hitting C-c, then immediately exiting.
Same potential leak can occur if error is E_NOMEM, since the return is
done in the case block. Added Py_XDECREF(v); to both blocks, just
before the return.
-rw-r--r-- | Python/pythonrun.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 78c5624..6948829 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -992,13 +992,14 @@ err_input(err) break; case E_TOKEN: msg = "invalid token"; - break; case E_INTR: PyErr_SetNone(PyExc_KeyboardInterrupt); + Py_XDECREF(v); return; case E_NOMEM: PyErr_NoMemory(); + Py_XDECREF(v); return; case E_EOF: msg = "unexpected EOF while parsing"; |