From 0af4916ad42f0a5eec08b81adf9971e3b8e4a629 Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Sat, 27 Oct 2001 06:14:32 +0000 Subject: [PATCH] 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. --- Python/getargs.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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); -- 2.40.0