Skip to content

Commit b6962cd

Browse files
Store state in TreeBuilderObject context
1 parent dd37b9f commit b6962cd

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

Modules/_elementtree.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2293,6 +2293,7 @@ typedef struct {
22932293

22942294
char insert_comments;
22952295
char insert_pis;
2296+
elementtreestate *state;
22962297
} TreeBuilderObject;
22972298

22982299
#define TreeBuilder_CheckExact(st, op) Py_IS_TYPE((op), (st)->TreeBuilder_Type)
@@ -2326,6 +2327,7 @@ treebuilder_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
23262327
t->start_ns_event_obj = t->end_ns_event_obj = NULL;
23272328
t->comment_event_obj = t->pi_event_obj = NULL;
23282329
t->insert_comments = t->insert_pis = 0;
2330+
t->state = ET_STATE_GLOBAL;
23292331
}
23302332
return (PyObject *)t;
23312333
}
@@ -2357,7 +2359,7 @@ _elementtree_TreeBuilder___init___impl(TreeBuilderObject *self,
23572359
}
23582360

23592361
if (comment_factory == Py_None) {
2360-
elementtreestate *st = ET_STATE_GLOBAL;
2362+
elementtreestate *st = self->state;
23612363
comment_factory = st->comment_factory;
23622364
}
23632365
if (comment_factory) {
@@ -2551,7 +2553,7 @@ treebuilder_flush_data(TreeBuilderObject* self)
25512553
if (!self->data) {
25522554
return 0;
25532555
}
2554-
elementtreestate *st = ET_STATE_GLOBAL;
2556+
elementtreestate *st = self->state;
25552557
if (!self->last_for_tail) {
25562558
PyObject *element = self->last;
25572559
return treebuilder_extend_element_text_or_tail(
@@ -2611,7 +2613,7 @@ treebuilder_handle_start(TreeBuilderObject* self, PyObject* tag,
26112613
{
26122614
PyObject* node;
26132615
PyObject* this;
2614-
elementtreestate *st = ET_STATE_GLOBAL;
2616+
elementtreestate *st = self->state;
26152617

26162618
if (treebuilder_flush_data(self) < 0) {
26172619
return NULL;

0 commit comments

Comments
 (0)