Commit 5865e421 authored by Neal Norwitz's avatar Neal Norwitz

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.
parent 1f2cc338
...@@ -1064,6 +1064,17 @@ PyErr_PrintEx(int set_sys_last_vars) ...@@ -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) ...@@ -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);
......
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