From: Tim Peters Date: Sat, 27 Oct 2001 06:14:32 +0000 (+0000) Subject: vgetargskeywords: Removed all PyErr_Clear() calls. It's possible that X-Git-Tag: v2.2.1c1~1007 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0af4916ad42f0a5eec08b81adf9971e3b8e4a629;p=python vgetargskeywords: Removed all PyErr_Clear() calls. It's possible that this routine will report an error now when it didn't before, but, if so, it's a legitimate error that should never have been suppressed. --- diff --git a/Python/getargs.c b/Python/getargs.c index 5c78dd734f..3306eb6344 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -1097,6 +1097,8 @@ vgetargskeywords(PyObject *args, PyObject *keywords, char *format, thiskw); return 0; } + else if (PyErr_Occurred()) + return 0; } } @@ -1107,10 +1109,11 @@ vgetargskeywords(PyObject *args, PyObject *keywords, char *format, for (i = nargs; i < min; i++) { if (PyDict_GetItemString(keywords, kwlist[i])) len++; + else if (PyErr_Occurred()) + return 0; } } - PyErr_Clear(); - + /* make sure we got an acceptable number of arguments; the message is a little confusing with keywords since keyword arguments which are supplied, but don't match the required arguments @@ -1159,7 +1162,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, char *format, "number of items in format string and keyword list do not match"); return 0; } - + /* convert the keyword arguments; this uses the format string where it was left after processing args */ converted = 0; @@ -1178,8 +1181,9 @@ vgetargskeywords(PyObject *args, PyObject *keywords, char *format, } converted++; } + else if (PyErr_Occurred()) + return 0; else { - PyErr_Clear(); msg = skipitem(&format, p_va); if (msg) { seterror(i+1, msg, levels, fname, message);