changeset: 102763:f1ad6f64a11e user: Victor Stinner date: Fri Aug 19 17:12:23 2016 +0200 files: Include/abstract.h Include/ceval.h Objects/abstract.c Python/ceval.c description: Fix PyObject_Call() parameter names Issue #27128: arg=>args, kw=>kwargs. Same change for PyEval_CallObjectWithKeywords(). diff -r 5cf9524f2923 -r f1ad6f64a11e Include/abstract.h --- a/Include/abstract.h Fri Aug 19 17:04:54 2016 +0200 +++ b/Include/abstract.h Fri Aug 19 17:12:23 2016 +0200 @@ -264,7 +264,7 @@ */ PyAPI_FUNC(PyObject *) PyObject_Call(PyObject *callable_object, - PyObject *args, PyObject *kw); + PyObject *args, PyObject *kwargs); #ifndef Py_LIMITED_API PyAPI_FUNC(PyObject*) _PyStack_AsTuple(PyObject **stack, diff -r 5cf9524f2923 -r f1ad6f64a11e Include/ceval.h --- a/Include/ceval.h Fri Aug 19 17:04:54 2016 +0200 +++ b/Include/ceval.h Fri Aug 19 17:12:23 2016 +0200 @@ -8,7 +8,7 @@ /* Interface to random parts in ceval.c */ PyAPI_FUNC(PyObject *) PyEval_CallObjectWithKeywords( - PyObject *, PyObject *, PyObject *); + PyObject *func, PyObject *args, PyObject *kwargs); /* Inline this */ #define PyEval_CallObject(func,arg) \ diff -r 5cf9524f2923 -r f1ad6f64a11e Objects/abstract.c --- a/Objects/abstract.c Fri Aug 19 17:04:54 2016 +0200 +++ b/Objects/abstract.c Fri Aug 19 17:12:23 2016 +0200 @@ -2194,7 +2194,7 @@ } PyObject * -PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) +PyObject_Call(PyObject *func, PyObject *args, PyObject *kwargs) { ternaryfunc call; PyObject *result; @@ -2203,6 +2203,8 @@ because it may clear it (directly or indirectly) and so the caller loses its exception */ assert(!PyErr_Occurred()); + assert(PyTuple_Check(args)); + assert(kwargs == NULL || PyDict_Check(kwargs)); call = func->ob_type->tp_call; if (call == NULL) { @@ -2214,7 +2216,7 @@ if (Py_EnterRecursiveCall(" while calling a Python object")) return NULL; - result = (*call)(func, arg, kw); + result = (*call)(func, args, kwargs); Py_LeaveRecursiveCall(); diff -r 5cf9524f2923 -r f1ad6f64a11e Python/ceval.c --- a/Python/ceval.c Fri Aug 19 17:04:54 2016 +0200 +++ b/Python/ceval.c Fri Aug 19 17:12:23 2016 +0200 @@ -4580,7 +4580,7 @@ The arg must be a tuple or NULL. The kw must be a dict or NULL. */ PyObject * -PyEval_CallObjectWithKeywords(PyObject *func, PyObject *arg, PyObject *kw) +PyEval_CallObjectWithKeywords(PyObject *func, PyObject *args, PyObject *kwargs) { PyObject *result; @@ -4591,32 +4591,33 @@ assert(!PyErr_Occurred()); #endif - if (arg == NULL) { - if (kw == NULL) { + if (args == NULL) { + if (kwargs == NULL) { return _PyObject_FastCall(func, NULL, 0, 0); } - arg = PyTuple_New(0); - if (arg == NULL) + args = PyTuple_New(0); + if (args == NULL) return NULL; } - else if (!PyTuple_Check(arg)) { + else if (!PyTuple_Check(args)) { PyErr_SetString(PyExc_TypeError, "argument list must be a tuple"); return NULL; } - else - Py_INCREF(arg); - - if (kw != NULL && !PyDict_Check(kw)) { + else { + Py_INCREF(args); + } + + if (kwargs != NULL && !PyDict_Check(kwargs)) { PyErr_SetString(PyExc_TypeError, "keyword list must be a dictionary"); - Py_DECREF(arg); + Py_DECREF(args); return NULL; } - result = PyObject_Call(func, arg, kw); - Py_DECREF(arg); + result = PyObject_Call(func, args, kwargs); + Py_DECREF(args); return result; }