mirror of
https://github.com/python/cpython.git
synced 2025-08-31 22:18:28 +00:00
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
This commit is contained in:
parent
964c074a62
commit
4c9dace392
1 changed files with 5 additions and 6 deletions
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue