@@ -231,9 +231,9 @@ typedef struct {
231231 PyObject * _children [STATIC_CHILDREN ];
232232
233233 /* incremented whenever 'attrib' is externally mutated */
234- size_t attrib_version ;
234+ size_t attrs_version ;
235235 /* incremented whenever children are externally mutated */
236- size_t version ;
236+ size_t nodes_version ;
237237} ElementObjectExtra ;
238238
239239typedef struct {
@@ -283,8 +283,8 @@ create_extra(ElementObject* self, PyObject* attrib)
283283 self -> extra -> allocated = STATIC_CHILDREN ;
284284 self -> extra -> children = self -> extra -> _children ;
285285
286- self -> extra -> attrib_version = 0 ;
287- self -> extra -> version = 0 ;
286+ self -> extra -> attrs_version = 0 ;
287+ self -> extra -> nodes_version = 0 ;
288288
289289 return 0 ;
290290}
@@ -513,7 +513,7 @@ element_resize(ElementObject* self, Py_ssize_t extra)
513513 }
514514 self -> extra -> children = children ;
515515 self -> extra -> allocated = size ;
516- self -> extra -> version ++ ;
516+ self -> extra -> nodes_version ++ ;
517517 }
518518
519519 return 0 ;
@@ -547,7 +547,7 @@ element_add_subelement(elementtreestate *st, ElementObject *self,
547547 self -> extra -> children [self -> extra -> length ] = Py_NewRef (element );
548548
549549 self -> extra -> length ++ ;
550- self -> extra -> version ++ ;
550+ self -> extra -> nodes_version ++ ;
551551
552552 return 0 ;
553553}
@@ -789,7 +789,7 @@ _elementtree_Element___copy___impl(ElementObject *self, PyTypeObject *cls)
789789
790790 assert (!element -> extra -> length );
791791 element -> extra -> length = self -> extra -> length ;
792- element -> extra -> version = self -> extra -> version ;
792+ element -> extra -> nodes_version = self -> extra -> nodes_version ;
793793 }
794794
795795 return (PyObject * ) element ;
@@ -873,7 +873,7 @@ _elementtree_Element___deepcopy___impl(ElementObject *self, PyObject *memo)
873873
874874 assert (!element -> extra -> length );
875875 element -> extra -> length = self -> extra -> length ;
876- element -> extra -> version = 0 ;
876+ element -> extra -> nodes_version = 0 ;
877877 }
878878
879879 /* add object to memo dictionary (so deepcopy won't visit it again) */
@@ -1029,12 +1029,10 @@ element_setstate_from_attributes(elementtreestate *st,
10291029
10301030 Py_XSETREF (self -> tag , Py_NewRef (tag ));
10311031
1032- // TODO(picnix): determine how versioning would work with an evil text
10331032 text = text ? JOIN_SET (text , PyList_CheckExact (text )) : Py_None ;
10341033 Py_INCREF (JOIN_OBJ (text ));
10351034 _set_joined_ptr (& self -> text , text );
10361035
1037- // TODO(picnix): determine how versioning would work with an evil tail
10381036 tail = tail ? JOIN_SET (tail , PyList_CheckExact (tail )) : Py_None ;
10391037 Py_INCREF (JOIN_OBJ (tail ));
10401038 _set_joined_ptr (& self -> tail , tail );
@@ -1085,7 +1083,6 @@ element_setstate_from_attributes(elementtreestate *st,
10851083
10861084 assert (!self -> extra -> length );
10871085 self -> extra -> length = nchildren ;
1088- self -> extra -> version ++ ;
10891086 }
10901087 else {
10911088 if (element_resize (self , 0 )) {
@@ -1095,7 +1092,6 @@ element_setstate_from_attributes(elementtreestate *st,
10951092
10961093 /* Stash attrib. */
10971094 Py_XSETREF (self -> extra -> attrib , Py_XNewRef (attrib ));
1098- self -> extra -> attrib_version ++ ;
10991095 dealloc_extra (oldextra );
11001096
11011097 Py_RETURN_NONE ;
@@ -1564,7 +1560,7 @@ _elementtree_Element_insert_impl(ElementObject *self, Py_ssize_t index,
15641560 self -> extra -> children [index ] = Py_NewRef (subelement );
15651561
15661562 self -> extra -> length ++ ;
1567- self -> extra -> version ++ ;
1563+ self -> extra -> nodes_version ++ ;
15681564
15691565 Py_RETURN_NONE ;
15701566}
@@ -1687,7 +1683,7 @@ _elementtree_Element_remove_impl(ElementObject *self, PyObject *subelement)
16871683 self -> extra -> length -- ;
16881684 for (; i < self -> extra -> length ; i ++ )
16891685 self -> extra -> children [i ] = self -> extra -> children [i + 1 ];
1690- self -> extra -> version ++ ;
1686+ self -> extra -> nodes_version ++ ;
16911687
16921688 Py_DECREF (found );
16931689 Py_RETURN_NONE ;
@@ -1743,7 +1739,7 @@ _elementtree_Element_set_impl(ElementObject *self, PyObject *key,
17431739 if (PyDict_SetItem (attrib , key , value ) < 0 )
17441740 return NULL ;
17451741
1746- self -> extra -> attrib_version ++ ;
1742+ self -> extra -> attrs_version ++ ;
17471743 Py_RETURN_NONE ;
17481744}
17491745
@@ -1777,7 +1773,7 @@ element_setitem(PyObject* self_, Py_ssize_t index, PyObject* item)
17771773 self -> extra -> children [i ] = self -> extra -> children [i + 1 ];
17781774 }
17791775
1780- self -> extra -> version ++ ;
1776+ self -> extra -> nodes_version ++ ;
17811777 Py_DECREF (old );
17821778
17831779 return 0 ;
@@ -1928,7 +1924,7 @@ element_ass_subscr(PyObject* self_, PyObject* item, PyObject* value)
19281924 }
19291925
19301926 self -> extra -> length -= slicelen ;
1931- self -> extra -> version ++ ;
1927+ self -> extra -> nodes_version ++ ;
19321928
19331929 /* Discard the recycle list with all the deleted sub-elements */
19341930 Py_DECREF (recycle );
@@ -2004,7 +2000,7 @@ element_ass_subscr(PyObject* self_, PyObject* item, PyObject* value)
20042000 }
20052001
20062002 self -> extra -> length += newlen - slicelen ;
2007- self -> extra -> version ++ ;
2003+ self -> extra -> nodes_version ++ ;
20082004
20092005 Py_DECREF (seq );
20102006
@@ -2101,7 +2097,7 @@ element_attrib_setter(ElementObject *self, PyObject *value, void *closure)
21012097 return -1 ;
21022098 }
21032099 Py_XSETREF (self -> extra -> attrib , Py_NewRef (value ));
2104- self -> extra -> attrib_version ++ ;
2100+ self -> extra -> attrs_version ++ ;
21052101 return 0 ;
21062102}
21072103
0 commit comments