Skip to content

Commit dd92ea2

Browse files
Store state in TreeBuilderObject context
1 parent b53bad6 commit dd92ea2

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

Modules/_elementtree.c

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

22902290
char insert_comments;
22912291
char insert_pis;
2292+
elementtreestate *state;
22922293
} TreeBuilderObject;
22932294

22942295
#define TreeBuilder_CheckExact(st, op) Py_IS_TYPE((op), (st)->TreeBuilder_Type)
@@ -2322,6 +2323,7 @@ treebuilder_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
23222323
t->start_ns_event_obj = t->end_ns_event_obj = NULL;
23232324
t->comment_event_obj = t->pi_event_obj = NULL;
23242325
t->insert_comments = t->insert_pis = 0;
2326+
t->state = ET_STATE_GLOBAL;
23252327
}
23262328
return (PyObject *)t;
23272329
}
@@ -2353,7 +2355,7 @@ _elementtree_TreeBuilder___init___impl(TreeBuilderObject *self,
23532355
}
23542356

23552357
if (comment_factory == Py_None) {
2356-
elementtreestate *st = ET_STATE_GLOBAL;
2358+
elementtreestate *st = self->state;
23572359
comment_factory = st->comment_factory;
23582360
}
23592361
if (comment_factory) {
@@ -2547,7 +2549,7 @@ treebuilder_flush_data(TreeBuilderObject* self)
25472549
if (!self->data) {
25482550
return 0;
25492551
}
2550-
elementtreestate *st = ET_STATE_GLOBAL;
2552+
elementtreestate *st = self->state;
25512553
if (!self->last_for_tail) {
25522554
PyObject *element = self->last;
25532555
return treebuilder_extend_element_text_or_tail(
@@ -2607,7 +2609,7 @@ treebuilder_handle_start(TreeBuilderObject* self, PyObject* tag,
26072609
{
26082610
PyObject* node;
26092611
PyObject* this;
2610-
elementtreestate *st = ET_STATE_GLOBAL;
2612+
elementtreestate *st = self->state;
26112613

26122614
if (treebuilder_flush_data(self) < 0) {
26132615
return NULL;

0 commit comments

Comments
 (0)