Kaydet (Commit) 2d854c8e authored tarafından Victor Stinner's avatar Victor Stinner

Issue #20024: Py_BuildValue() now saves/restores the current exception before

building an item if the build of a previous item failed.
üst 5116f782
......@@ -161,7 +161,17 @@ do_mktuple(const char **p_format, va_list *p_va, int endchar, int n, int flags)
/* Note that we can't bail immediately on error as this will leak
refcounts on any 'N' arguments. */
for (i = 0; i < n; i++) {
PyObject *w = do_mkvalue(p_format, p_va, flags);
PyObject *w;
if (itemfailed) {
PyObject *exception, *value, *tb;
PyErr_Fetch(&exception, &value, &tb);
w = do_mkvalue(p_format, p_va, flags);
PyErr_Restore(exception, value, tb);
}
else {
w = do_mkvalue(p_format, p_va, flags);
}
if (w == NULL) {
itemfailed = 1;
Py_INCREF(Py_None);
......
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