Don't decref exc too soon

This commit is contained in:
Nick Coghlan 2013-11-16 00:34:13 +10:00
parent c4c2580d43
commit 4b9b936429
1 changed files with 2 additions and 1 deletions

View File

@ -2685,7 +2685,6 @@ _PyErr_TrySetFromCause(const char *format, ...)
* state potentially stored on OSError instances.
*/
Py_DECREF(exc);
Py_XDECREF(tb);
#ifdef HAVE_STDARG_PROTOTYPES
@ -2696,12 +2695,14 @@ _PyErr_TrySetFromCause(const char *format, ...)
msg_prefix = PyUnicode_FromFormatV(format, vargs);
va_end(vargs);
if (msg_prefix == NULL) {
Py_DECREF(exc);
Py_DECREF(val);
return NULL;
}
PyErr_Format(exc, "%U (%s: %S)",
msg_prefix, Py_TYPE(val)->tp_name, val);
Py_DECREF(exc);
Py_DECREF(msg_prefix);
PyErr_Fetch(&new_exc, &new_val, &new_tb);
PyErr_NormalizeException(&new_exc, &new_val, &new_tb);