changeset: 102850:f48ae71e8a8f user: Victor Stinner date: Tue Aug 23 00:21:34 2016 +0200 files: Modules/_csv.c description: Issue #27809: _csv: _call_dialect() uses fast call diff -r 614dd914c21e -r f48ae71e8a8f Modules/_csv.c --- a/Modules/_csv.c Tue Aug 23 00:11:04 2016 +0200 +++ b/Modules/_csv.c Tue Aug 23 00:21:34 2016 +0200 @@ -518,15 +518,13 @@ static PyObject * _call_dialect(PyObject *dialect_inst, PyObject *kwargs) { - PyObject *ctor_args; - PyObject *dialect; - - ctor_args = Py_BuildValue(dialect_inst ? "(O)" : "()", dialect_inst); - if (ctor_args == NULL) - return NULL; - dialect = PyObject_Call((PyObject *)&Dialect_Type, ctor_args, kwargs); - Py_DECREF(ctor_args); - return dialect; + PyObject *type = (PyObject *)&Dialect_Type; + if (dialect_inst) { + return _PyObject_FastCallDict(type, &dialect_inst, 1, kwargs); + } + else { + return _PyObject_FastCallDict(type, NULL, 0, kwargs); + } } /*