Skip to content

Commit 9b6f559

Browse files
committed
unify versioning
1 parent a1950d1 commit 9b6f559

File tree

2 files changed

+15
-18
lines changed

2 files changed

+15
-18
lines changed

Lib/test/test_xml_etree_c.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ class SizeofTest(unittest.TestCase):
234234
def setUp(self):
235235
self.elementsize = support.calcobjsize('5P')
236236
# extra
237-
self.extra = struct.calcsize('PnnP4PNN')
237+
self.extra = struct.calcsize('PnnP4PN')
238238

239239
check_sizeof = support.check_sizeof
240240

Modules/_elementtree.c

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,8 @@ typedef struct {
230230

231231
PyObject* _children[STATIC_CHILDREN];
232232

233-
/* incremented whenever 'attrib' is externally mutated */
234-
size_t attrs_version;
235-
/* incremented whenever children are externally mutated */
236-
size_t nodes_version;
233+
/* incremented whenever the object is externally mutated */
234+
size_t version;
237235
} ElementObjectExtra;
238236

239237
typedef struct {
@@ -283,8 +281,7 @@ create_extra(ElementObject* self, PyObject* attrib)
283281
self->extra->allocated = STATIC_CHILDREN;
284282
self->extra->children = self->extra->_children;
285283

286-
self->extra->attrs_version = 0;
287-
self->extra->nodes_version = 0;
284+
self->extra->version = 0;
288285

289286
return 0;
290287
}
@@ -513,7 +510,7 @@ element_resize(ElementObject* self, Py_ssize_t extra)
513510
}
514511
self->extra->children = children;
515512
self->extra->allocated = size;
516-
self->extra->nodes_version++;
513+
self->extra->version++;
517514
}
518515

519516
return 0;
@@ -547,7 +544,7 @@ element_add_subelement(elementtreestate *st, ElementObject *self,
547544
self->extra->children[self->extra->length] = Py_NewRef(element);
548545

549546
self->extra->length++;
550-
self->extra->nodes_version++;
547+
self->extra->version++;
551548

552549
return 0;
553550
}
@@ -789,7 +786,7 @@ _elementtree_Element___copy___impl(ElementObject *self, PyTypeObject *cls)
789786

790787
assert(!element->extra->length);
791788
element->extra->length = self->extra->length;
792-
element->extra->nodes_version = self->extra->nodes_version;
789+
element->extra->version = self->extra->version;
793790
}
794791

795792
return (PyObject*) element;
@@ -873,7 +870,7 @@ _elementtree_Element___deepcopy___impl(ElementObject *self, PyObject *memo)
873870

874871
assert(!element->extra->length);
875872
element->extra->length = self->extra->length;
876-
element->extra->nodes_version = 0;
873+
element->extra->version = 0;
877874
}
878875

879876
/* add object to memo dictionary (so deepcopy won't visit it again) */
@@ -1560,7 +1557,7 @@ _elementtree_Element_insert_impl(ElementObject *self, Py_ssize_t index,
15601557
self->extra->children[index] = Py_NewRef(subelement);
15611558

15621559
self->extra->length++;
1563-
self->extra->nodes_version++;
1560+
self->extra->version++;
15641561

15651562
Py_RETURN_NONE;
15661563
}
@@ -1683,7 +1680,7 @@ _elementtree_Element_remove_impl(ElementObject *self, PyObject *subelement)
16831680
self->extra->length--;
16841681
for (; i < self->extra->length; i++)
16851682
self->extra->children[i] = self->extra->children[i+1];
1686-
self->extra->nodes_version++;
1683+
self->extra->version++;
16871684

16881685
Py_DECREF(found);
16891686
Py_RETURN_NONE;
@@ -1739,7 +1736,7 @@ _elementtree_Element_set_impl(ElementObject *self, PyObject *key,
17391736
if (PyDict_SetItem(attrib, key, value) < 0)
17401737
return NULL;
17411738

1742-
self->extra->attrs_version++;
1739+
self->extra->version++;
17431740
Py_RETURN_NONE;
17441741
}
17451742

@@ -1773,7 +1770,7 @@ element_setitem(PyObject* self_, Py_ssize_t index, PyObject* item)
17731770
self->extra->children[i] = self->extra->children[i+1];
17741771
}
17751772

1776-
self->extra->nodes_version++;
1773+
self->extra->version++;
17771774
Py_DECREF(old);
17781775

17791776
return 0;
@@ -1924,7 +1921,7 @@ element_ass_subscr(PyObject* self_, PyObject* item, PyObject* value)
19241921
}
19251922

19261923
self->extra->length -= slicelen;
1927-
self->extra->nodes_version++;
1924+
self->extra->version++;
19281925

19291926
/* Discard the recycle list with all the deleted sub-elements */
19301927
Py_DECREF(recycle);
@@ -2000,7 +1997,7 @@ element_ass_subscr(PyObject* self_, PyObject* item, PyObject* value)
20001997
}
20011998

20021999
self->extra->length += newlen - slicelen;
2003-
self->extra->nodes_version++;
2000+
self->extra->version++;
20042001

20052002
Py_DECREF(seq);
20062003

@@ -2097,7 +2094,7 @@ element_attrib_setter(ElementObject *self, PyObject *value, void *closure)
20972094
return -1;
20982095
}
20992096
Py_XSETREF(self->extra->attrib, Py_NewRef(value));
2100-
self->extra->attrs_version++;
2097+
self->extra->version++;
21012098
return 0;
21022099
}
21032100

0 commit comments

Comments
 (0)