Reported by Klocwork #151.

v2 can be NULL if exception2 is NULL.  I don't think that condition can happen,
but I'm not sure it can't either.  Now the code will protect against either
being NULL.
This commit is contained in:
Neal Norwitz 2006-07-17 00:59:04 +00:00
parent 04e39ec815
commit a5e4f22bfb

View file

@ -1064,6 +1064,17 @@ PyErr_PrintEx(int set_sys_last_vars)
} }
PyErr_Fetch(&exception2, &v2, &tb2); PyErr_Fetch(&exception2, &v2, &tb2);
PyErr_NormalizeException(&exception2, &v2, &tb2); PyErr_NormalizeException(&exception2, &v2, &tb2);
/* It should not be possible for exception2 or v2
to be NULL. However PyErr_Display() can't
tolerate NULLs, so just be safe. */
if (exception2 == NULL) {
exception2 = Py_None;
Py_INCREF(exception2);
}
if (v2 == NULL) {
v2 = Py_None;
Py_INCREF(v2);
}
if (Py_FlushLine()) if (Py_FlushLine())
PyErr_Clear(); PyErr_Clear();
fflush(stdout); fflush(stdout);
@ -1071,8 +1082,8 @@ PyErr_PrintEx(int set_sys_last_vars)
PyErr_Display(exception2, v2, tb2); PyErr_Display(exception2, v2, tb2);
PySys_WriteStderr("\nOriginal exception was:\n"); PySys_WriteStderr("\nOriginal exception was:\n");
PyErr_Display(exception, v, tb); PyErr_Display(exception, v, tb);
Py_XDECREF(exception2); Py_DECREF(exception2);
Py_XDECREF(v2); Py_DECREF(v2);
Py_XDECREF(tb2); Py_XDECREF(tb2);
} }
Py_XDECREF(result); Py_XDECREF(result);