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: