Use _PyObject_CallMethodIdObjArgs()
Issue #28915: Replace _PyObject_CallMethodId() with
_PyObject_CallMethodIdObjArgs() in various modules 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/Python/_warnings.c b/Python/_warnings.c
index 189bf70..588fabb 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -26,7 +26,7 @@
if (obj == Py_None)
return 1;
- result = _PyObject_CallMethodId(obj, &PyId_match, "O", arg);
+ result = _PyObject_CallMethodIdObjArgs(obj, &PyId_match, arg, NULL);
if (result == NULL)
return -1;
diff --git a/Python/import.c b/Python/import.c
index 6bcb1d7..aef1800 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1705,7 +1705,7 @@
Py_INCREF(imp);
}
- reloaded_module = _PyObject_CallMethodId(imp, &PyId_reload, "O", m);
+ reloaded_module = _PyObject_CallMethodIdObjArgs(imp, &PyId_reload, m, NULL);
Py_DECREF(imp);
return reloaded_module;
}
diff --git a/Python/marshal.c b/Python/marshal.c
index 0889e41..d71d3c2 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -1649,7 +1649,7 @@
s = PyMarshal_WriteObjectToString(x, version);
if (s == NULL)
return NULL;
- res = _PyObject_CallMethodId(f, &PyId_write, "O", s);
+ res = _PyObject_CallMethodIdObjArgs(f, &PyId_write, s, NULL);
Py_DECREF(s);
return res;
}