Mercurial > cpython-lru_cache-weakref
comparison Python/pythonrun.c @ 9965:c1091e82e5aa legacy-trunk
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.
| author | Barry Warsaw <barry@python.org> |
|---|---|
| date | Wed, 27 Jan 1999 16:39:40 +0000 |
| parents | bd1ce4120e6f |
| children | caf2c65a6bcf |
comparison
equal
deleted
inserted
replaced
| 9964:d44cb87e500d | 9965:c1091e82e5aa |
|---|---|
| 990 case E_SYNTAX: | 990 case E_SYNTAX: |
| 991 msg = "invalid syntax"; | 991 msg = "invalid syntax"; |
| 992 break; | 992 break; |
| 993 case E_TOKEN: | 993 case E_TOKEN: |
| 994 msg = "invalid token"; | 994 msg = "invalid token"; |
| 995 | |
| 996 break; | 995 break; |
| 997 case E_INTR: | 996 case E_INTR: |
| 998 PyErr_SetNone(PyExc_KeyboardInterrupt); | 997 PyErr_SetNone(PyExc_KeyboardInterrupt); |
| 998 Py_XDECREF(v); | |
| 999 return; | 999 return; |
| 1000 case E_NOMEM: | 1000 case E_NOMEM: |
| 1001 PyErr_NoMemory(); | 1001 PyErr_NoMemory(); |
| 1002 Py_XDECREF(v); | |
| 1002 return; | 1003 return; |
| 1003 case E_EOF: | 1004 case E_EOF: |
| 1004 msg = "unexpected EOF while parsing"; | 1005 msg = "unexpected EOF while parsing"; |
| 1005 break; | 1006 break; |
| 1006 case E_INDENT: | 1007 case E_INDENT: |
