[Python-checkins] cpython: Revert change f860b7a775c5

victor.stinner python-checkins at python.org
Mon Sep 12 07:38:46 EDT 2016


https://hg.python.org/cpython/rev/e372c0ad32ce
changeset:   103705:e372c0ad32ce
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Mon Sep 12 13:30:02 2016 +0200
summary:
  Revert change f860b7a775c5

Revert change "Issue #27213: Reintroduce checks in _PyStack_AsDict()", pushed
by mistake.

files:
  Include/abstract.h     |   4 +---
  Objects/abstract.c     |  26 +++++++-------------------
  Objects/methodobject.c |   2 +-
  3 files changed, 9 insertions(+), 23 deletions(-)


diff --git a/Include/abstract.h b/Include/abstract.h
--- a/Include/abstract.h
+++ b/Include/abstract.h
@@ -275,9 +275,7 @@
 
     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).
 
diff --git a/Objects/abstract.c b/Objects/abstract.c
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -2367,9 +2367,9 @@
 }
 
 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 @@
         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 @@
     }
 
     if (nkwargs > 0) {
-        kwdict = _PyStack_AsDict(stack + nargs, nkwargs, kwnames, func);
+        kwdict = _PyStack_AsDict(stack + nargs, kwnames);
         if (kwdict == NULL) {
             return NULL;
         }
diff --git a/Objects/methodobject.c b/Objects/methodobject.c
--- a/Objects/methodobject.c
+++ b/Objects/methodobject.c
@@ -279,7 +279,7 @@
 
     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;
         }

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list