[Python-checkins] cpython: Use _PyObject_CallMethodIdObjArgs() in _elementtree

victor.stinner python-checkins at python.org
Fri Dec 9 10:31:39 EST 2016


https://hg.python.org/cpython/rev/ef05cc5cc651
changeset: 105551:ef05cc5cc651
user: Victor Stinner <victor.stinner at gmail.com>
date: Fri Dec 09 15:26:00 2016 +0100
summary:
 Use _PyObject_CallMethodIdObjArgs() in _elementtree
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.
files:
 Modules/_elementtree.c | 19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
--- a/Modules/_elementtree.c
+++ b/Modules/_elementtree.c
@@ -1171,8 +1171,8 @@
 
 if (checkpath(path) || namespaces != Py_None) {
 _Py_IDENTIFIER(find);
- return _PyObject_CallMethodId(
- st->elementpath_obj, &PyId_find, "OOO", self, path, namespaces
+ return _PyObject_CallMethodIdObjArgs(
+ st->elementpath_obj, &PyId_find, self, path, namespaces, NULL
 );
 }
 
@@ -1216,8 +1216,9 @@
 elementtreestate *st = ET_STATE_GLOBAL;
 
 if (checkpath(path) || namespaces != Py_None)
- return _PyObject_CallMethodId(
- st->elementpath_obj, &PyId_findtext, "OOOO", self, path, default_value, namespaces
+ return _PyObject_CallMethodIdObjArgs(
+ st->elementpath_obj, &PyId_findtext,
+ self, path, default_value, namespaces, NULL
 );
 
 if (!self->extra) {
@@ -1271,8 +1272,8 @@
 
 if (checkpath(tag) || namespaces != Py_None) {
 _Py_IDENTIFIER(findall);
- return _PyObject_CallMethodId(
- st->elementpath_obj, &PyId_findall, "OOO", self, tag, namespaces
+ return _PyObject_CallMethodIdObjArgs(
+ st->elementpath_obj, &PyId_findall, self, tag, namespaces, NULL
 );
 }
 
@@ -1318,8 +1319,8 @@
 _Py_IDENTIFIER(iterfind);
 elementtreestate *st = ET_STATE_GLOBAL;
 
- return _PyObject_CallMethodId(
- st->elementpath_obj, &PyId_iterfind, "OOO", self, tag, namespaces);
+ return _PyObject_CallMethodIdObjArgs(
+ st->elementpath_obj, &PyId_iterfind, self, tag, namespaces, NULL);
 }
 
 /*[clinic input]
@@ -2440,7 +2441,7 @@
 }
 else {
 PyObject *res;
- res = _PyObject_CallMethodId(element, &PyId_append, "O", child);
+ res = _PyObject_CallMethodIdObjArgs(element, &PyId_append, child, NULL);
 if (res == NULL)
 return -1;
 Py_DECREF(res);
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /