Skip to content

Commit 0195c35

Browse files
Fix cherry-picks
1 parent 706385a commit 0195c35

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

Modules/_elementtree.c

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2781,10 +2781,10 @@ treebuilder_handle_comment(TreeBuilderObject* self, PyObject* text)
27812781
return NULL;
27822782

27832783
this = self->this;
2784-
elementtreestate *st = ET_STATE_GLOBAL;
27852784
if (self->insert_comments && this != Py_None) {
2786-
if (treebuilder_add_subelement(st, this, comment) < 0)
2785+
if (treebuilder_add_subelement(self->state, this, comment) < 0) {
27872786
goto error;
2787+
}
27882788
Py_XSETREF(self->last_for_tail, Py_NewRef(comment));
27892789
}
27902790
} else {
@@ -2821,9 +2821,8 @@ treebuilder_handle_pi(TreeBuilderObject* self, PyObject* target, PyObject* text)
28212821
}
28222822

28232823
this = self->this;
2824-
elementtreestate *st = ET_STATE_GLOBAL;
28252824
if (self->insert_pis && this != Py_None) {
2826-
if (treebuilder_add_subelement(st, this, pi) < 0)
2825+
if (treebuilder_add_subelement(self->state, this, pi) < 0)
28272826
goto error;
28282827
Py_XSETREF(self->last_for_tail, Py_NewRef(pi));
28292828
}
@@ -3784,7 +3783,8 @@ _check_xmlparser(XMLParserObject* self)
37843783
}
37853784

37863785
LOCAL(PyObject*)
3787-
expat_parse(XMLParserObject* self, const char* data, int data_len, int final)
3786+
expat_parse(elementtreestate *st, XMLParserObject *self, const char *data,
3787+
int data_len, int final)
37883788
{
37893789
int ok;
37903790

@@ -3795,7 +3795,6 @@ expat_parse(XMLParserObject* self, const char* data, int data_len, int final)
37953795
return NULL;
37963796

37973797
if (!ok) {
3798-
elementtreestate *st = ET_STATE_GLOBAL;
37993798
expat_set_error(
38003799
st,
38013800
EXPAT(GetErrorCode)(self->parser),
@@ -3825,11 +3824,11 @@ _elementtree_XMLParser_close_impl(XMLParserObject *self)
38253824
if (!_check_xmlparser(self)) {
38263825
return NULL;
38273826
}
3828-
res = expat_parse(self, "", 0, 1);
3827+
elementtreestate *st = self->state;
3828+
res = expat_parse(st, self, "", 0, 1);
38293829
if (!res)
38303830
return NULL;
38313831

3832-
elementtreestate *st = self->state;
38333832
if (TreeBuilder_CheckExact(st, self->target)) {
38343833
Py_DECREF(res);
38353834
return treebuilder_done((TreeBuilderObject*) self->target);
@@ -3860,6 +3859,7 @@ _elementtree_XMLParser_feed(XMLParserObject *self, PyObject *data)
38603859
if (!_check_xmlparser(self)) {
38613860
return NULL;
38623861
}
3862+
elementtreestate *st = self->state;
38633863
if (PyUnicode_Check(data)) {
38643864
Py_ssize_t data_len;
38653865
const char *data_ptr = PyUnicode_AsUTF8AndSize(data, &data_len);
@@ -3871,7 +3871,8 @@ _elementtree_XMLParser_feed(XMLParserObject *self, PyObject *data)
38713871
}
38723872
/* Explicitly set UTF-8 encoding. Return code ignored. */
38733873
(void)EXPAT(SetEncoding)(self->parser, "utf-8");
3874-
return expat_parse(self, data_ptr, (int)data_len, 0);
3874+
3875+
return expat_parse(st, self, data_ptr, (int)data_len, 0);
38753876
}
38763877
else {
38773878
Py_buffer view;
@@ -3883,7 +3884,7 @@ _elementtree_XMLParser_feed(XMLParserObject *self, PyObject *data)
38833884
PyErr_SetString(PyExc_OverflowError, "size does not fit in an int");
38843885
return NULL;
38853886
}
3886-
res = expat_parse(self, view.buf, (int)view.len, 0);
3887+
res = expat_parse(st, self, view.buf, (int)view.len, 0);
38873888
PyBuffer_Release(&view);
38883889
return res;
38893890
}
@@ -3915,6 +3916,7 @@ _elementtree_XMLParser__parse_whole(XMLParserObject *self, PyObject *file)
39153916
return NULL;
39163917

39173918
/* read from open file object */
3919+
elementtreestate *st = self->state;
39183920
for (;;) {
39193921

39203922
buffer = PyObject_CallFunction(reader, "i", 64*1024);
@@ -3952,8 +3954,8 @@ _elementtree_XMLParser__parse_whole(XMLParserObject *self, PyObject *file)
39523954
return NULL;
39533955
}
39543956
res = expat_parse(
3955-
self, PyBytes_AS_STRING(buffer), (int)PyBytes_GET_SIZE(buffer), 0
3956-
);
3957+
st, self, PyBytes_AS_STRING(buffer), (int)PyBytes_GET_SIZE(buffer),
3958+
0);
39573959

39583960
Py_DECREF(buffer);
39593961

@@ -3967,9 +3969,8 @@ _elementtree_XMLParser__parse_whole(XMLParserObject *self, PyObject *file)
39673969

39683970
Py_DECREF(reader);
39693971

3970-
res = expat_parse(self, "", 0, 1);
3972+
res = expat_parse(st, self, "", 0, 1);
39713973

3972-
elementtreestate *st = self->state;
39733974
if (res && TreeBuilder_CheckExact(st, self->target)) {
39743975
Py_DECREF(res);
39753976
return treebuilder_done((TreeBuilderObject*) self->target);

0 commit comments

Comments
 (0)