@@ -1573,9 +1573,8 @@ element_setattr(ElementObject* self, const char* name, PyObject* value)
15731573 }
15741574
15751575 if (strcmp (name , "tag" ) == 0 ) {
1576- Py_DECREF (self -> tag );
1577- self -> tag = value ;
1578- Py_INCREF (self -> tag );
1576+ Py_INCREF (value );
1577+ Py_SETREF (self -> tag , value );
15791578 } else if (strcmp (name , "text" ) == 0 ) {
15801579 Py_DECREF (JOIN_OBJ (self -> text ));
15811580 self -> text = value ;
@@ -1587,9 +1586,8 @@ element_setattr(ElementObject* self, const char* name, PyObject* value)
15871586 } else if (strcmp (name , "attrib" ) == 0 ) {
15881587 if (!self -> extra )
15891588 element_new_extra (self , NULL );
1590- Py_DECREF (self -> extra -> attrib );
1591- self -> extra -> attrib = value ;
1592- Py_INCREF (self -> extra -> attrib );
1589+ Py_INCREF (value );
1590+ Py_SETREF (self -> extra -> attrib , value );
15931591 } else {
15941592 PyErr_SetString (PyExc_AttributeError , name );
15951593 return -1 ;
@@ -1800,13 +1798,11 @@ treebuilder_handle_start(TreeBuilderObject* self, PyObject* tag,
18001798 }
18011799 self -> index ++ ;
18021800
1803- Py_DECREF (this );
18041801 Py_INCREF (node );
1805- self -> this = (ElementObject * ) node ;
1802+ Py_SETREF ( self -> this , (ElementObject * ) node ) ;
18061803
1807- Py_DECREF (self -> last );
18081804 Py_INCREF (node );
1809- self -> last = (ElementObject * ) node ;
1805+ Py_SETREF ( self -> last , (ElementObject * ) node ) ;
18101806
18111807 if (treebuilder_append_event (self , self -> start_event_obj , node ) < 0 )
18121808 goto error ;
@@ -1857,7 +1853,7 @@ treebuilder_handle_data(TreeBuilderObject* self, PyObject* data)
18571853LOCAL (PyObject * )
18581854treebuilder_handle_end (TreeBuilderObject * self , PyObject * tag )
18591855{
1860- PyObject * item ;
1856+ ElementObject * item ;
18611857
18621858 if (self -> data ) {
18631859 if (self -> this == self -> last ) {
@@ -1882,15 +1878,12 @@ treebuilder_handle_end(TreeBuilderObject* self, PyObject* tag)
18821878 return NULL ;
18831879 }
18841880
1881+ item = self -> last ;
1882+ self -> last = self -> this ;
18851883 self -> index -- ;
1886-
1887- item = PyList_GET_ITEM (self -> stack , self -> index );
1888- Py_INCREF (item );
1889-
1890- Py_DECREF (self -> last );
1891-
1892- self -> last = (ElementObject * ) self -> this ;
1893- self -> this = (ElementObject * ) item ;
1884+ self -> this = (ElementObject * ) PyList_GET_ITEM (self -> stack , self -> index );
1885+ Py_INCREF (self -> this );
1886+ Py_DECREF (item );
18941887
18951888 if (treebuilder_append_event (self , self -> end_event_obj , (PyObject * )self -> last ) < 0 )
18961889 return NULL ;
0 commit comments