From 3824cd8fd44f287ea2a76120a39ee76eb34bbf32 Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Wed, 1 Mar 2017 20:41:03 +0900 Subject: bpo-29684: Fix regression of PyEval_CallObjectWithKeywords (GH-87) It should raise TypeError when kwargs is not a dict. --- Objects/call.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'Objects/call.c') diff --git a/Objects/call.c b/Objects/call.c index 310b4a205f..a4af816e30 100644 --- a/Objects/call.c +++ b/Objects/call.c @@ -766,11 +766,7 @@ PyEval_CallObjectWithKeywords(PyObject *callable, assert(!PyErr_Occurred()); #endif - if (args == NULL) { - return _PyObject_FastCallDict(callable, NULL, 0, kwargs); - } - - if (!PyTuple_Check(args)) { + if (args != NULL && !PyTuple_Check(args)) { PyErr_SetString(PyExc_TypeError, "argument list must be a tuple"); return NULL; @@ -782,7 +778,12 @@ PyEval_CallObjectWithKeywords(PyObject *callable, return NULL; } - return PyObject_Call(callable, args, kwargs); + if (args == NULL) { + return _PyObject_FastCallDict(callable, NULL, 0, kwargs); + } + else { + return PyObject_Call(callable, args, kwargs); + } } -- cgit v1.2.1