]> granicus.if.org Git - python/commitdiff
vgetargskeywords: The keywords arg is a dict (if non-NULL), so use the
authorTim Peters <tim.peters@gmail.com>
Sat, 27 Oct 2001 05:50:39 +0000 (05:50 +0000)
committerTim Peters <tim.peters@gmail.com>
Sat, 27 Oct 2001 05:50:39 +0000 (05:50 +0000)
dict API everywhere on it instead of sometimes using the slower mapping
API.

Python/getargs.c

index a68940a57c2aed2a65694e0dc1eaa08ff323bb8c..5c78dd734fd46d0eece56ba71bd2111bcad099d8 100644 (file)
@@ -1090,7 +1090,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, char *format,
                        char *thiskw = kwlist[i];
                        if (thiskw == NULL)
                                break;
-                       if (PyMapping_HasKeyString(keywords, thiskw)) {
+                       if (PyDict_GetItemString(keywords, thiskw)) {
                                PyErr_Format(PyExc_TypeError,
                                        "keyword parameter '%s' was given "
                                        "by position and by name",
@@ -1105,9 +1105,8 @@ vgetargskeywords(PyObject *args, PyObject *keywords, char *format,
        len = nargs;
        if (keywords && nargs < min) {
                for (i = nargs; i < min; i++) {
-                 if (PyMapping_HasKeyString(keywords, kwlist[i])) {
+                       if (PyDict_GetItemString(keywords, kwlist[i]))
                                len++;
-                 }
                }
        }
        PyErr_Clear();  
@@ -1168,15 +1167,16 @@ vgetargskeywords(PyObject *args, PyObject *keywords, char *format,
                PyObject *item;
                if (*format == '|')
                        format++;
-               item = PyMapping_GetItemString(keywords, kwlist[i]);
+               item = PyDict_GetItemString(keywords, kwlist[i]);
                if (item != NULL) {
+                       Py_INCREF(item);
                        msg = convertitem(item, &format, p_va, levels, msgbuf);
+                       Py_DECREF(item);
                        if (msg) {
                                seterror(i+1, msg, levels, fname, message);
                                return 0;
                        }
                        converted++;
-                       Py_DECREF(item);
                }
                else {
                        PyErr_Clear();