Use _PyObject_CallMethodIdObjArgs() in _io
Issue #28915: Replace _PyObject_CallMethodId() with
_PyObject_CallMethodIdObjArgs() when the format string was only made of "O"
formats, PyObject* arguments.
_PyObject_CallMethodIdObjArgs() avoids the creation of a temporary tuple and
doesn't have to parse a format string.
diff --git a/Modules/_io/winconsoleio.c b/Modules/_io/winconsoleio.c
index 7b00a9e..d8e4339 100644
--- a/Modules/_io/winconsoleio.c
+++ b/Modules/_io/winconsoleio.c
@@ -85,7 +85,7 @@
Py_CLEAR(decoded);
return '\0';
}
- decoded_upper = PyObject_CallMethod(decoded, "upper", "");
+ decoded_upper = PyObject_CallMethod(decoded, "upper", NULL);
Py_CLEAR(decoded);
if (!decoded_upper) {
PyErr_Clear();
@@ -181,8 +181,8 @@
PyObject *exc, *val, *tb;
int rc;
_Py_IDENTIFIER(close);
- res = _PyObject_CallMethodId((PyObject*)&PyRawIOBase_Type,
- &PyId_close, "O", self);
+ res = _PyObject_CallMethodIdObjArgs((PyObject*)&PyRawIOBase_Type,
+ &PyId_close, self, NULL);
if (!self->closehandle) {
self->handle = INVALID_HANDLE_VALUE;
return res;