]> granicus.if.org Git - python/commitdiff
vgetargskeywords: Removed all PyErr_Clear() calls. It's possible that
authorTim Peters <tim.peters@gmail.com>
Sat, 27 Oct 2001 06:14:32 +0000 (06:14 +0000)
committerTim Peters <tim.peters@gmail.com>
Sat, 27 Oct 2001 06:14:32 +0000 (06:14 +0000)
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

index 5c78dd734fd46d0eece56ba71bd2111bcad099d8..3306eb6344cccfa404a63f8d5162b1f6603deae1 100644 (file)
@@ -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);