From: Guido van Rossum Date: Mon, 7 Aug 2000 19:22:43 +0000 (+0000) Subject: When returning an error from jcompile() (which is passed through by X-Git-Tag: v2.0b1~547 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6c2f0c73a13e1d106042661ddf5c6ab1d56bdd01;p=thirdparty%2FPython%2Fcpython.git When returning an error from jcompile() (which is passed through by PyNode_Compile()), make sure that an exception is actually set -- otherwise someone stomped on our error. [2.0 checkin of this fix.] --- diff --git a/Python/compile.c b/Python/compile.c index 72f3be49b64f..49e5863d03b3 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -3293,6 +3293,14 @@ jcompile(node *n, char *filename, struct compiling *base) Py_XDECREF(filename); Py_XDECREF(name); } + else if (!PyErr_Occurred()) { + /* This could happen if someone called PyErr_Clear() after an + error was reported above. That's not supposed to happen, + but I just plugged one case and I'm not sure there can't be + others. In that case, raise SystemError so that at least + it gets reported instead dumping core. */ + PyErr_SetString(PyExc_SystemError, "lost syntax error"); + } com_free(&sc); return co; }