]> granicus.if.org Git - python/commitdiff
Revert change f860b7a775c5
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 12 Sep 2016 11:30:02 +0000 (13:30 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Mon, 12 Sep 2016 11:30:02 +0000 (13:30 +0200)
Revert change "Issue #27213: Reintroduce checks in _PyStack_AsDict()", pushed
by mistake.

Include/abstract.h
Objects/abstract.c
Objects/methodobject.c

index 87483677fdff8a02529d42ef4480d48749a505a2..a94ce660c05f01c6f68309e8d54bb4e5733405e8 100644 (file)
@@ -275,9 +275,7 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
 
     PyAPI_FUNC(PyObject *) _PyStack_AsDict(
         PyObject **values,
-        Py_ssize_t nkwargs,
-        PyObject *kwnames,
-        PyObject *func);
+        PyObject *kwnames);
 
     /* Convert (args, nargs, kwargs) into a (stack, nargs, kwnames).
 
index f9e5009f78a0862725d81a5260cb26c84189e176..a929be9fe6bcefcbd27fe859771bff51e303e593 100644 (file)
@@ -2367,9 +2367,9 @@ _PyObject_Call_Prepend(PyObject *func,
 }
 
 PyObject *
-_PyStack_AsDict(PyObject **values, Py_ssize_t nkwargs, PyObject *kwnames,
-                PyObject *func)
+_PyStack_AsDict(PyObject **values, PyObject *kwnames)
 {
+    Py_ssize_t nkwargs = PyTuple_GET_SIZE(kwnames);
     PyObject *kwdict;
     Py_ssize_t i;
 
@@ -2378,24 +2378,12 @@ _PyStack_AsDict(PyObject **values, Py_ssize_t nkwargs, PyObject *kwnames,
         return NULL;
     }
 
-    for (i=0; i < nkwargs; i++) {
-        int err;
+    for (i = 0; i < nkwargs; i++) {
         PyObject *key = PyTuple_GET_ITEM(kwnames, i);
         PyObject *value = *values++;
-
-        if (PyDict_GetItem(kwdict, key) != NULL) {
-            PyErr_Format(PyExc_TypeError,
-                         "%.200s%s got multiple values "
-                         "for keyword argument '%U'",
-                         PyEval_GetFuncName(func),
-                         PyEval_GetFuncDesc(func),
-                         key);
-            Py_DECREF(kwdict);
-            return NULL;
-        }
-
-        err = PyDict_SetItem(kwdict, key, value);
-        if (err) {
+        assert(PyUnicode_CheckExact(key));
+        assert(PyDict_GetItem(kwdict, key) == NULL);
+        if (PyDict_SetItem(kwdict, key, value)) {
             Py_DECREF(kwdict);
             return NULL;
         }
@@ -2479,7 +2467,7 @@ _PyObject_FastCallKeywords(PyObject *func, PyObject **stack, Py_ssize_t nargs,
     }
 
     if (nkwargs > 0) {
-        kwdict = _PyStack_AsDict(stack + nargs, nkwargs, kwnames, func);
+        kwdict = _PyStack_AsDict(stack + nargs, kwnames);
         if (kwdict == NULL) {
             return NULL;
         }
index 487ccd7a3008a285e6352415628a538bea9f735c..90c473ee9713841e7ecfdc290472a9b939a5b72f 100644 (file)
@@ -279,7 +279,7 @@ _PyCFunction_FastCallKeywords(PyObject *func, PyObject **stack,
 
     nkwargs = (kwnames == NULL) ? 0 : PyTuple_GET_SIZE(kwnames);
     if (nkwargs > 0) {
-        kwdict = _PyStack_AsDict(stack + nargs, nkwargs, kwnames, func);
+        kwdict = _PyStack_AsDict(stack + nargs, kwnames);
         if (kwdict == NULL) {
             return NULL;
         }