]> granicus.if.org Git - python/commitdiff
_elementtree: deepcopy() now uses fast call
authorVictor Stinner <victor.stinner@gmail.com>
Fri, 19 Aug 2016 23:34:44 +0000 (01:34 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Fri, 19 Aug 2016 23:34:44 +0000 (01:34 +0200)
Issue #27128.

Modules/_elementtree.c

index b32f2ad2835ca9cfca3805b37978fde0eceaa818..5d124b3b423ba56f6a6febf70edd4b0fc7955273 100644 (file)
@@ -819,9 +819,8 @@ LOCAL(PyObject *)
 deepcopy(PyObject *object, PyObject *memo)
 {
     /* do a deep copy of the given object */
-    PyObject *args;
-    PyObject *result;
     elementtreestate *st;
+    PyObject *stack[2];
 
     /* Fast paths */
     if (object == Py_None || PyUnicode_CheckExact(object)) {
@@ -857,12 +856,9 @@ deepcopy(PyObject *object, PyObject *memo)
         return NULL;
     }
 
-    args = PyTuple_Pack(2, object, memo);
-    if (!args)
-        return NULL;
-    result = PyObject_CallObject(st->deepcopy_obj, args);
-    Py_DECREF(args);
-    return result;
+    stack[0] = object;
+    stack[1] = memo;
+    return _PyObject_FastCall(st->deepcopy_obj, stack, 2, NULL);
 }