Skip to content
Prev Previous commit
Next Next commit
Refactor: replace query with parameter
Pass state as arg to create_elementiter()
  • Loading branch information
erlend-aasland committed Jan 23, 2023
commit ac623de963ff45fb580764a534b8aae3c1a0d511
13 changes: 8 additions & 5 deletions Modules/_elementtree.c
Original file line number Diff line number Diff line change
Expand Up @@ -1391,7 +1391,8 @@ _elementtree_Element_get_impl(ElementObject *self, PyObject *key,
}

static PyObject *
create_elementiter(ElementObject *self, PyObject *tag, int gettext);
create_elementiter(elementtreestate *st, ElementObject *self, PyObject *tag,
int gettext);


/*[clinic input]
Expand All @@ -1416,7 +1417,8 @@ _elementtree_Element_iter_impl(ElementObject *self, PyObject *tag)
tag = Py_None;
}

return create_elementiter(self, tag, 0);
elementtreestate *st = ET_STATE_GLOBAL;
return create_elementiter(st, self, tag, 0);
}


Expand All @@ -1429,7 +1431,8 @@ static PyObject *
_elementtree_Element_itertext_impl(ElementObject *self)
/*[clinic end generated code: output=5fa34b2fbcb65df6 input=af8f0e42cb239c89]*/
{
return create_elementiter(self, Py_None, 1);
elementtreestate *st = ET_STATE_GLOBAL;
return create_elementiter(st, self, Py_None, 1);
}


Expand Down Expand Up @@ -2247,11 +2250,11 @@ static PyType_Spec elementiter_spec = {
#define INIT_PARENT_STACK_SIZE 8

static PyObject *
create_elementiter(ElementObject *self, PyObject *tag, int gettext)
create_elementiter(elementtreestate *st, ElementObject *self, PyObject *tag,
int gettext)
{
ElementIterObject *it;

elementtreestate *st = ET_STATE_GLOBAL;
it = PyObject_GC_New(ElementIterObject, st->ElementIter_Type);
if (!it)
return NULL;
Expand Down