From 6c2f0c73a13e1d106042661ddf5c6ab1d56bdd01 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 7 Aug 2000 19:22:43 +0000 Subject: 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.] --- Python/compile.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Python/compile.c b/Python/compile.c index 72f3be4..49e5863 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; } -- cgit v0.12