@@ -3581,7 +3581,7 @@ _elementtree_XMLParser__setevents_impl(XMLParserObject *self,
35813581/*[clinic end generated code: output=1440092922b13ed1 input=abf90830a1c3b0fc]*/
35823582{
35833583 /* activate element event reporting */
3584- Py_ssize_t i , seqlen ;
3584+ Py_ssize_t i ;
35853585 TreeBuilderObject * target ;
35863586 PyObject * events_append , * events_seq ;
35873587
@@ -3599,8 +3599,7 @@ _elementtree_XMLParser__setevents_impl(XMLParserObject *self,
35993599 events_append = PyObject_GetAttrString (events_queue , "append" );
36003600 if (events_append == NULL )
36013601 return NULL ;
3602- Py_XDECREF (target -> events_append );
3603- target -> events_append = events_append ;
3602+ Py_SETREF (target -> events_append , events_append );
36043603
36053604 /* clear out existing events */
36063605 Py_CLEAR (target -> start_event_obj );
@@ -3619,46 +3618,41 @@ _elementtree_XMLParser__setevents_impl(XMLParserObject *self,
36193618 return NULL ;
36203619 }
36213620
3622- seqlen = PySequence_Size (events_seq );
3623- for (i = 0 ; i < seqlen ; ++ i ) {
3621+ for (i = 0 ; i < PySequence_Size (events_seq ); ++ i ) {
36243622 PyObject * event_name_obj = PySequence_Fast_GET_ITEM (events_seq , i );
36253623 char * event_name = NULL ;
36263624 if (PyUnicode_Check (event_name_obj )) {
3627- event_name = _PyUnicode_AsString (event_name_obj );
3625+ event_name = PyUnicode_AsUTF8 (event_name_obj );
36283626 } else if (PyBytes_Check (event_name_obj )) {
36293627 event_name = PyBytes_AS_STRING (event_name_obj );
36303628 }
3631-
36323629 if (event_name == NULL ) {
36333630 Py_DECREF (events_seq );
36343631 PyErr_Format (PyExc_ValueError , "invalid events sequence" );
36353632 return NULL ;
3636- } else if (strcmp (event_name , "start" ) == 0 ) {
3637- Py_INCREF (event_name_obj );
3638- target -> start_event_obj = event_name_obj ;
3633+ }
3634+
3635+ Py_INCREF (event_name_obj );
3636+ if (strcmp (event_name , "start" ) == 0 ) {
3637+ Py_SETREF (target -> start_event_obj , event_name_obj );
36393638 } else if (strcmp (event_name , "end" ) == 0 ) {
3640- Py_INCREF (event_name_obj );
3641- Py_XDECREF (target -> end_event_obj );
3642- target -> end_event_obj = event_name_obj ;
3639+ Py_SETREF (target -> end_event_obj , event_name_obj );
36433640 } else if (strcmp (event_name , "start-ns" ) == 0 ) {
3644- Py_INCREF (event_name_obj );
3645- Py_XDECREF (target -> start_ns_event_obj );
3646- target -> start_ns_event_obj = event_name_obj ;
3641+ Py_SETREF (target -> start_ns_event_obj , event_name_obj );
36473642 EXPAT (SetNamespaceDeclHandler )(
36483643 self -> parser ,
36493644 (XML_StartNamespaceDeclHandler ) expat_start_ns_handler ,
36503645 (XML_EndNamespaceDeclHandler ) expat_end_ns_handler
36513646 );
36523647 } else if (strcmp (event_name , "end-ns" ) == 0 ) {
3653- Py_INCREF (event_name_obj );
3654- Py_XDECREF (target -> end_ns_event_obj );
3655- target -> end_ns_event_obj = event_name_obj ;
3648+ Py_SETREF (target -> end_ns_event_obj , event_name_obj );
36563649 EXPAT (SetNamespaceDeclHandler )(
36573650 self -> parser ,
36583651 (XML_StartNamespaceDeclHandler ) expat_start_ns_handler ,
36593652 (XML_EndNamespaceDeclHandler ) expat_end_ns_handler
36603653 );
36613654 } else {
3655+ Py_DECREF (event_name_obj );
36623656 Py_DECREF (events_seq );
36633657 PyErr_Format (PyExc_ValueError , "unknown event '%s'" , event_name );
36643658 return NULL ;
0 commit comments