]> granicus.if.org Git - python/commitdiff
Use _PyObject_CallMethodIdObjArgs()
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 8 Dec 2016 23:36:19 +0000 (00:36 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 8 Dec 2016 23:36:19 +0000 (00:36 +0100)
Issue #28915: Replace _PyObject_CallMethodId() with
_PyObject_CallMethodIdObjArgs() when the format string only use the format 'O'
for objects, like "(O)".

_PyObject_CallMethodIdObjArgs() avoids the code to parse a format string and
avoids the creation of a temporary tuple.

Modules/_io/textio.c
Objects/descrobject.c
Python/sysmodule.c

index 1c7200b0aea6ef904a0a47a797a3ac5a5135a5d5..d28f613950743afd6a462bf979bb325136492a55 100644 (file)
@@ -2435,7 +2435,7 @@ _io_TextIOWrapper_tell_impl(textio *self)
     }
 
 finally:
-    res = _PyObject_CallMethodId(self->decoder, &PyId_setstate, "(O)", saved_state);
+    res = _PyObject_CallMethodIdObjArgs(self->decoder, &PyId_setstate, saved_state, NULL);
     Py_DECREF(saved_state);
     if (res == NULL)
         return NULL;
@@ -2449,7 +2449,7 @@ fail:
     if (saved_state) {
         PyObject *type, *value, *traceback;
         PyErr_Fetch(&type, &value, &traceback);
-        res = _PyObject_CallMethodId(self->decoder, &PyId_setstate, "(O)", saved_state);
+        res = _PyObject_CallMethodIdObjArgs(self->decoder, &PyId_setstate, saved_state, NULL);
         _PyErr_ChainExceptions(type, value, traceback);
         Py_DECREF(saved_state);
         Py_XDECREF(res);
index 076e74148148254333f91eadb78417e296a3d682..ee356b1bf40316ff71f508e3c97c62ca1cdcc4fe 100644 (file)
@@ -804,7 +804,8 @@ mappingproxy_get(mappingproxyobject *pp, PyObject *args)
 
     if (!PyArg_UnpackTuple(args, "get", 1, 2, &key, &def))
         return NULL;
-    return _PyObject_CallMethodId(pp->mapping, &PyId_get, "(OO)", key, def);
+    return _PyObject_CallMethodIdObjArgs(pp->mapping, &PyId_get,
+                                         key, def, NULL);
 }
 
 static PyObject *
index 1537313b4351d3b045e2681e55d8a344e60f90b5..9c4d9e6a1ca2dcb10e5964d974c23396bdba0218 100644 (file)
@@ -130,7 +130,7 @@ sys_displayhook_unencodable(PyObject *outf, PyObject *o)
 
     buffer = _PyObject_GetAttrId(outf, &PyId_buffer);
     if (buffer) {
-        result = _PyObject_CallMethodId(buffer, &PyId_write, "(O)", encoded);
+        result = _PyObject_CallMethodIdObjArgs(buffer, &PyId_write, encoded, NULL);
         Py_DECREF(buffer);
         Py_DECREF(encoded);
         if (result == NULL)