Skip to content

Commit f0117f3

Browse files
Refactor: replace query with parameter
Pass state as arg to expat_parse()
1 parent 96dbd9f commit f0117f3

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

Modules/_elementtree.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3764,7 +3764,8 @@ _check_xmlparser(XMLParserObject* self)
37643764
}
37653765

37663766
LOCAL(PyObject*)
3767-
expat_parse(XMLParserObject* self, const char* data, int data_len, int final)
3767+
expat_parse(elementtreestate *st, XMLParserObject *self, const char *data,
3768+
int data_len, int final)
37683769
{
37693770
int ok;
37703771

@@ -3775,7 +3776,6 @@ expat_parse(XMLParserObject* self, const char* data, int data_len, int final)
37753776
return NULL;
37763777

37773778
if (!ok) {
3778-
elementtreestate *st = ET_STATE_GLOBAL;
37793779
expat_set_error(
37803780
st,
37813781
EXPAT(GetErrorCode)(self->parser),
@@ -3805,11 +3805,11 @@ _elementtree_XMLParser_close_impl(XMLParserObject *self)
38053805
if (!_check_xmlparser(self)) {
38063806
return NULL;
38073807
}
3808-
res = expat_parse(self, "", 0, 1);
3808+
elementtreestate *st = ET_STATE_GLOBAL;
3809+
res = expat_parse(st, self, "", 0, 1);
38093810
if (!res)
38103811
return NULL;
38113812

3812-
elementtreestate *st = ET_STATE_GLOBAL;
38133813
if (TreeBuilder_CheckExact(st, self->target)) {
38143814
Py_DECREF(res);
38153815
return treebuilder_done((TreeBuilderObject*) self->target);
@@ -3840,6 +3840,7 @@ _elementtree_XMLParser_feed(XMLParserObject *self, PyObject *data)
38403840
if (!_check_xmlparser(self)) {
38413841
return NULL;
38423842
}
3843+
elementtreestate *st = ET_STATE_GLOBAL;
38433844
if (PyUnicode_Check(data)) {
38443845
Py_ssize_t data_len;
38453846
const char *data_ptr = PyUnicode_AsUTF8AndSize(data, &data_len);
@@ -3851,7 +3852,8 @@ _elementtree_XMLParser_feed(XMLParserObject *self, PyObject *data)
38513852
}
38523853
/* Explicitly set UTF-8 encoding. Return code ignored. */
38533854
(void)EXPAT(SetEncoding)(self->parser, "utf-8");
3854-
return expat_parse(self, data_ptr, (int)data_len, 0);
3855+
3856+
return expat_parse(st, self, data_ptr, (int)data_len, 0);
38553857
}
38563858
else {
38573859
Py_buffer view;
@@ -3863,7 +3865,7 @@ _elementtree_XMLParser_feed(XMLParserObject *self, PyObject *data)
38633865
PyErr_SetString(PyExc_OverflowError, "size does not fit in an int");
38643866
return NULL;
38653867
}
3866-
res = expat_parse(self, view.buf, (int)view.len, 0);
3868+
res = expat_parse(st, self, view.buf, (int)view.len, 0);
38673869
PyBuffer_Release(&view);
38683870
return res;
38693871
}
@@ -3895,6 +3897,7 @@ _elementtree_XMLParser__parse_whole(XMLParserObject *self, PyObject *file)
38953897
return NULL;
38963898

38973899
/* read from open file object */
3900+
elementtreestate *st = ET_STATE_GLOBAL;
38983901
for (;;) {
38993902

39003903
buffer = PyObject_CallFunction(reader, "i", 64*1024);
@@ -3932,8 +3935,8 @@ _elementtree_XMLParser__parse_whole(XMLParserObject *self, PyObject *file)
39323935
return NULL;
39333936
}
39343937
res = expat_parse(
3935-
self, PyBytes_AS_STRING(buffer), (int)PyBytes_GET_SIZE(buffer), 0
3936-
);
3938+
st, self, PyBytes_AS_STRING(buffer), (int)PyBytes_GET_SIZE(buffer),
3939+
0);
39373940

39383941
Py_DECREF(buffer);
39393942

@@ -3947,9 +3950,8 @@ _elementtree_XMLParser__parse_whole(XMLParserObject *self, PyObject *file)
39473950

39483951
Py_DECREF(reader);
39493952

3950-
res = expat_parse(self, "", 0, 1);
3953+
res = expat_parse(st, self, "", 0, 1);
39513954

3952-
elementtreestate *st = ET_STATE_GLOBAL;
39533955
if (res && TreeBuilder_CheckExact(st, self->target)) {
39543956
Py_DECREF(res);
39553957
return treebuilder_done((TreeBuilderObject*) self->target);

0 commit comments

Comments
 (0)