Mercurial > cpython-lru_cache-weakref
diff Python/pythonrun.c @ 40016:e65836815791 2.4
[Backport r50685 | 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.
| author | Andrew M. Kuchling <amk@amk.ca> |
|---|---|
| date | Thu, 05 Oct 2006 18:57:54 +0000 |
| parents | 8c83fd79cee5 |
| children | 6860ba88d67e |
line wrap: on
line diff
--- a/Python/pythonrun.c Thu Oct 05 18:49:36 2006 +0000 +++ b/Python/pythonrun.c Thu Oct 05 18:57:54 2006 +0000 @@ -1080,6 +1080,17 @@ } PyErr_Fetch(&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()) PyErr_Clear(); fflush(stdout); @@ -1087,8 +1098,8 @@ PyErr_Display(exception2, v2, tb2); PySys_WriteStderr("\nOriginal exception was:\n"); PyErr_Display(exception, v, tb); - Py_XDECREF(exception2); - Py_XDECREF(v2); + Py_DECREF(exception2); + Py_DECREF(v2); Py_XDECREF(tb2); } Py_XDECREF(result);
