From 4c9dace392c537c40c2721141aab98f5799aa38b Mon Sep 17 00:00:00 2001 From: Jeremy Hylton Date: Tue, 29 May 2001 16:23:26 +0000 Subject: 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 "", line 1, in ? TypeError: clear() takes no keyword arguments --- Python/ceval.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Python/ceval.c b/Python/ceval.c index e407de4..902d529 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1970,18 +1970,17 @@ eval_code2(PyCodeObject *co, PyObject *globals, PyObject *locals, */ 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) { -- cgit v0.12