]> granicus.if.org Git - python/commitdiff
err_input(): Nailed a small memory leak. If the error is E_INTR, the
authorBarry Warsaw <barry@python.org>
Wed, 27 Jan 1999 16:39:40 +0000 (16:39 +0000)
committerBarry Warsaw <barry@python.org>
Wed, 27 Jan 1999 16:39:40 +0000 (16:39 +0000)
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.

Python/pythonrun.c

index 78c56247fac464610703df613cdd6bbf56919f3d..6948829418cfec51b393f41ddd6d30fe0bab6a02 100644 (file)
@@ -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";