diff options
author | Guido van Rossum <guido@python.org> | 2000-08-07 19:22:43 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2000-08-07 19:22:43 (GMT) |
commit | 6c2f0c73a13e1d106042661ddf5c6ab1d56bdd01 (patch) | |
tree | 3d0f508c81d36c310b35c88428230705d3362508 /Python | |
parent | ed473a46fc06d3e707821e5b83fa7210239a492d (diff) | |
download | cpython-6c2f0c73a13e1d106042661ddf5c6ab1d56bdd01.zip cpython-6c2f0c73a13e1d106042661ddf5c6ab1d56bdd01.tar.gz cpython-6c2f0c73a13e1d106042661ddf5c6ab1d56bdd01.tar.bz2 |
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.]
Diffstat (limited to 'Python')
-rw-r--r-- | Python/compile.c | 8 |
1 files changed, 8 insertions, 0 deletions
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; } |