vgetargskeywords:  The keywords arg is a dict (if non-NULL), so use the
dict API everywhere on it instead of sometimes using the slower mapping
API.
diff --git a/Python/getargs.c b/Python/getargs.c
index a68940a..5c78dd7 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -1090,7 +1090,7 @@
 			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 @@
 	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 @@
 		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();