@@ -3598,7 +3598,7 @@ _elementtree_XMLParser__setevents_impl(XMLParserObject *self,
35983598/*[clinic end generated code: output=1440092922b13ed1 input=59db9742910c6174]*/
35993599{
36003600 /* activate element event reporting */
3601- Py_ssize_t i , seqlen ;
3601+ Py_ssize_t i ;
36023602 TreeBuilderObject * target ;
36033603 PyObject * events_seq ;
36043604
@@ -3614,8 +3614,7 @@ _elementtree_XMLParser__setevents_impl(XMLParserObject *self,
36143614 target = (TreeBuilderObject * ) self -> target ;
36153615
36163616 Py_INCREF (events_queue );
3617- Py_XDECREF (target -> events );
3618- target -> events = events_queue ;
3617+ Py_SETREF (target -> events , events_queue );
36193618
36203619 /* clear out existing events */
36213620 Py_CLEAR (target -> start_event_obj );
@@ -3634,46 +3633,41 @@ _elementtree_XMLParser__setevents_impl(XMLParserObject *self,
36343633 return NULL ;
36353634 }
36363635
3637- seqlen = PySequence_Size (events_seq );
3638- for (i = 0 ; i < seqlen ; ++ i ) {
3636+ for (i = 0 ; i < PySequence_Size (events_seq ); ++ i ) {
36393637 PyObject * event_name_obj = PySequence_Fast_GET_ITEM (events_seq , i );
36403638 char * event_name = NULL ;
36413639 if (PyUnicode_Check (event_name_obj )) {
3642- event_name = _PyUnicode_AsString (event_name_obj );
3640+ event_name = PyUnicode_AsUTF8 (event_name_obj );
36433641 } else if (PyBytes_Check (event_name_obj )) {
36443642 event_name = PyBytes_AS_STRING (event_name_obj );
36453643 }
3646-
36473644 if (event_name == NULL ) {
36483645 Py_DECREF (events_seq );
36493646 PyErr_Format (PyExc_ValueError , "invalid events sequence" );
36503647 return NULL ;
3651- } else if (strcmp (event_name , "start" ) == 0 ) {
3652- Py_INCREF (event_name_obj );
3653- target -> start_event_obj = event_name_obj ;
3648+ }
3649+
3650+ Py_INCREF (event_name_obj );
3651+ if (strcmp (event_name , "start" ) == 0 ) {
3652+ Py_SETREF (target -> start_event_obj , event_name_obj );
36543653 } else if (strcmp (event_name , "end" ) == 0 ) {
3655- Py_INCREF (event_name_obj );
3656- Py_XDECREF (target -> end_event_obj );
3657- target -> end_event_obj = event_name_obj ;
3654+ Py_SETREF (target -> end_event_obj , event_name_obj );
36583655 } else if (strcmp (event_name , "start-ns" ) == 0 ) {
3659- Py_INCREF (event_name_obj );
3660- Py_XDECREF (target -> start_ns_event_obj );
3661- target -> start_ns_event_obj = event_name_obj ;
3656+ Py_SETREF (target -> start_ns_event_obj , event_name_obj );
36623657 EXPAT (SetNamespaceDeclHandler )(
36633658 self -> parser ,
36643659 (XML_StartNamespaceDeclHandler ) expat_start_ns_handler ,
36653660 (XML_EndNamespaceDeclHandler ) expat_end_ns_handler
36663661 );
36673662 } else if (strcmp (event_name , "end-ns" ) == 0 ) {
3668- Py_INCREF (event_name_obj );
3669- Py_XDECREF (target -> end_ns_event_obj );
3670- target -> end_ns_event_obj = event_name_obj ;
3663+ Py_SETREF (target -> end_ns_event_obj , event_name_obj );
36713664 EXPAT (SetNamespaceDeclHandler )(
36723665 self -> parser ,
36733666 (XML_StartNamespaceDeclHandler ) expat_start_ns_handler ,
36743667 (XML_EndNamespaceDeclHandler ) expat_end_ns_handler
36753668 );
36763669 } else {
3670+ Py_DECREF (event_name_obj );
36773671 Py_DECREF (events_seq );
36783672 PyErr_Format (PyExc_ValueError , "unknown event '%s'" , event_name );
36793673 return NULL ;
0 commit comments