From b1263d5a60d3f7ab02dd28409fff59b3815a3f67 Mon Sep 17 00:00:00 2001 From: Jeroen Demeyer Date: Fri, 28 Jun 2019 11:49:00 +0200 Subject: bpo-37337: Add _PyObject_VectorcallMethod() (GH-14228) --- Python/sysmodule.c | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) (limited to 'Python/sysmodule.c') diff --git a/Python/sysmodule.c b/Python/sysmodule.c index b200318c75f..1c575614125 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -3110,30 +3110,17 @@ PySys_SetArgv(int argc, wchar_t **argv) static int sys_pyfile_write_unicode(PyObject *unicode, PyObject *file) { - PyObject *writer = NULL, *result = NULL; - int err; - if (file == NULL) return -1; - - writer = _PyObject_GetAttrId(file, &PyId_write); - if (writer == NULL) - goto error; - - result = PyObject_CallFunctionObjArgs(writer, unicode, NULL); + assert(unicode != NULL); + PyObject *margs[2] = {file, unicode}; + PyObject *result = _PyObject_VectorcallMethodId(&PyId_write, margs, + 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); if (result == NULL) { - goto error; - } else { - err = 0; - goto finally; + return -1; } - -error: - err = -1; -finally: - Py_XDECREF(writer); - Py_XDECREF(result); - return err; + Py_DECREF(result); + return 0; } static int -- cgit v1.2.3