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.
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 @@
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";