Commit fa5c315a authored by Barry Warsaw's avatar Barry Warsaw

PyErr_GivenExceptionMatches(): Check for err==NULL and exc==NULL and

return 0 (exceptions don't match).  This means that if an ImportError
is raised because exceptions.py can't be imported, the interpreter
will exit "cleanly" with an error message instead of just core
dumping.

PyErr_SetFromErrnoWithFilename(), PyErr_SetFromWindowsErrWithFilename():
Don't test on Py_UseClassExceptionsFlag.
parent 48719d3d
......@@ -125,6 +125,10 @@ int
PyErr_GivenExceptionMatches(err, exc)
PyObject *err, *exc;
{
if (err == NULL || exc == NULL) {
/* maybe caused by "import exceptions" that failed early on */
return 0;
}
if (PyTuple_Check(exc)) {
int i, n;
n = PyTuple_Size(exc);
......@@ -331,7 +335,7 @@ PyErr_SetFromErrnoWithFilename(exc, filename)
}
}
#endif
if (filename != NULL && Py_UseClassExceptionsFlag)
if (filename != NULL)
v = Py_BuildValue("(iss)", i, s, filename);
else
v = Py_BuildValue("(is)", i, s);
......@@ -379,7 +383,7 @@ PyObject *PyErr_SetFromWindowsErrWithFilename(
/* remove trailing cr/lf and dots */
while (len > 0 && (s[len-1] <= ' ' || s[len-1] == '.'))
s[--len] = '\0';
if (filename != NULL && Py_UseClassExceptionsFlag)
if (filename != NULL)
v = Py_BuildValue("(iss)", err, s, filename);
else
v = Py_BuildValue("(is)", err, s);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment