Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 17991:0769e11d9d5f legacy-trunk
Fix bug reported by Tim Peters on python-dev:
Keyword arguments passed to builtin functions that don't take them are
ignored.
>>> {}.clear(x=2)
>>>
instead of
>>> {}.clear(x=2)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: clear() takes no keyword arguments
| author | Jeremy Hylton <jeremy@alum.mit.edu> |
|---|---|
| date | Tue, 29 May 2001 16:23:26 +0000 |
| parents | d2d3f88661a3 |
| children | 15f4381cff0f |
line wrap: on
line diff
--- a/Python/ceval.c Tue May 29 16:10:07 2001 +0000 +++ b/Python/ceval.c Tue May 29 16:23:26 2001 +0000 @@ -1970,18 +1970,17 @@ */ if (PyCFunction_Check(func)) { int flags = PyCFunction_GET_FLAGS(func); - if (flags == METH_VARARGS) { + if (flags > 1 || nk != 0) + x = do_call(func, &stack_pointer, + na, nk); + else if (flags == METH_VARARGS) { PyObject *callargs; callargs = load_args(&stack_pointer, na); x = call_cfunction(func, callargs, NULL); Py_XDECREF(callargs); - } else if (flags == 0) { + } else if (flags == 0) x = fast_cfunction(func, &stack_pointer, na); - } else { - x = do_call(func, &stack_pointer, - na, nk); - } } else { if (PyMethod_Check(func) && PyMethod_GET_SELF(func) != NULL) {
