From 9def0901e23c6d655f28b7e5711874033b5ff5bd Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sat, 20 Aug 2016 00:44:04 +0200 Subject: [PATCH] PyFile_WriteObject() now uses fast call Issue #27128: PyFile_WriteObject() now calls _PyObject_FastCall() to avoid the creation of a temporary tuple. --- Objects/fileobject.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Objects/fileobject.c b/Objects/fileobject.c index 234d07e5c6754d..83348a8ee3c79a 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -127,7 +127,7 @@ PyFile_GetLine(PyObject *f, int n) int PyFile_WriteObject(PyObject *v, PyObject *f, int flags) { - PyObject *writer, *value, *args, *result; + PyObject *writer, *value, *result; _Py_IDENTIFIER(write); if (f == NULL) { @@ -146,14 +146,7 @@ PyFile_WriteObject(PyObject *v, PyObject *f, int flags) Py_DECREF(writer); return -1; } - args = PyTuple_Pack(1, value); - if (args == NULL) { - Py_DECREF(value); - Py_DECREF(writer); - return -1; - } - result = PyEval_CallObject(writer, args); - Py_DECREF(args); + result = _PyObject_FastCall(writer, &value, 1, NULL); Py_DECREF(value); Py_DECREF(writer); if (result == NULL)