@@ -803,7 +803,7 @@ pub struct XML_ParserStruct<'scf> {
803803 pub m_errorCode : XML_Error ,
804804 pub m_eventPtr : * const c_char ,
805805 pub m_eventEndPtr : * const c_char ,
806- pub m_positionIdx : usize ,
806+ pub m_positionIdx : Option < usize > ,
807807 pub m_openInternalEntities : * mut OpenInternalEntity ,
808808 pub m_freeInternalEntities : * mut OpenInternalEntity ,
809809 pub m_defaultExpandInternalEntities : XML_Bool ,
@@ -1514,7 +1514,7 @@ impl<'scf> XML_ParserStruct<'scf> {
15141514 m_errorCode : XML_Error :: NONE ,
15151515 m_eventPtr : ptr:: null ( ) ,
15161516 m_eventEndPtr : ptr:: null ( ) ,
1517- m_positionIdx : 0 ,
1517+ m_positionIdx : None ,
15181518 m_openInternalEntities : ptr:: null_mut ( ) ,
15191519 m_freeInternalEntities : ptr:: null_mut ( ) ,
15201520 m_defaultExpandInternalEntities : false ,
@@ -1628,7 +1628,7 @@ impl<'scf> XML_ParserStruct<'scf> {
16281628 self . m_errorCode = XML_Error :: NONE ;
16291629 self . m_eventPtr = ptr:: null ( ) ;
16301630 self . m_eventEndPtr = ptr:: null ( ) ;
1631- self . m_positionIdx = 0 ;
1631+ self . m_positionIdx = Some ( 0 ) ;
16321632 self . m_openInternalEntities = ptr:: null_mut ( ) ;
16331633 self . m_defaultExpandInternalEntities = true ;
16341634 self . m_tagLevel = 0 ;
@@ -2534,7 +2534,7 @@ impl<'scf> XML_ParserStruct<'scf> {
25342534 if isFinal == 0 {
25352535 return XML_Status :: OK ;
25362536 }
2537- self . m_positionIdx = self . m_bufferStart ;
2537+ self . m_positionIdx = Some ( self . m_bufferStart ) ;
25382538 self . m_parseEndIdx = self . m_bufferEnd ;
25392539 /* If data are left over from last buffer, and we now know that these
25402540 data are the final chunk of input, then we have to check them again
@@ -2563,10 +2563,10 @@ impl<'scf> XML_ParserStruct<'scf> {
25632563 * LCOV_EXCL_START
25642564 */
25652565 ( * self . m_encoding ) . updatePosition (
2566- self . m_buffer [ self . m_positionIdx ..self . m_bufferStart ] . into ( ) ,
2566+ self . m_buffer [ self . m_positionIdx . unwrap ( ) . .self . m_bufferStart ] . into ( ) ,
25672567 & mut self . m_position ,
25682568 ) ;
2569- self . m_positionIdx = self . m_bufferStart ;
2569+ self . m_positionIdx = Some ( self . m_bufferStart ) ;
25702570 return XML_Status :: SUSPENDED ;
25712571 }
25722572 XML_Parsing :: INITIALIZED | XML_Parsing :: PARSING => {
@@ -2635,7 +2635,7 @@ impl<'scf> XML_ParserStruct<'scf> {
26352635 // convert in-out parameter `start` from index to pointer
26362636 // TODO(SJC): is signed overflow an issue here?
26372637 start = self . m_buffer . as_ptr ( ) . add ( self . m_bufferStart ) ;
2638- self . m_positionIdx = self . m_bufferStart ;
2638+ self . m_positionIdx = Some ( self . m_bufferStart ) ;
26392639 self . m_bufferEnd += len as usize ;
26402640 self . m_parseEndIdx = self . m_bufferEnd ;
26412641 self . m_parseEndByteIndex += len as usize ;
@@ -2667,10 +2667,10 @@ impl<'scf> XML_ParserStruct<'scf> {
26672667 }
26682668 }
26692669 ( * self . m_encoding ) . updatePosition (
2670- self . m_buffer [ self . m_positionIdx ..self . m_bufferStart ] . into ( ) ,
2670+ self . m_buffer [ self . m_positionIdx . unwrap ( ) . .self . m_bufferStart ] . into ( ) ,
26712671 & mut self . m_position ,
26722672 ) ;
2673- self . m_positionIdx = self . m_bufferStart ;
2673+ self . m_positionIdx = Some ( self . m_bufferStart ) ;
26742674 result
26752675 }
26762676}
@@ -2759,7 +2759,7 @@ impl <'scf> XML_ParserStruct<'scf> {
27592759 }
27602760 self . m_eventEndPtr = ptr:: null ( ) ;
27612761 self . m_eventPtr = ptr:: null ( ) ;
2762- self . m_positionIdx = 0 ;
2762+ self . m_positionIdx = None ;
27632763 }
27642764 Some ( & mut self . m_buffer [ self . m_bufferEnd ..] )
27652765 }
@@ -2888,10 +2888,10 @@ impl<'scf> XML_ParserStruct<'scf> {
28882888 }
28892889 }
28902890 ( * self . m_encoding ) . updatePosition (
2891- self . m_buffer [ self . m_positionIdx ..self . m_bufferStart ] . into ( ) ,
2891+ self . m_buffer [ self . m_positionIdx . unwrap ( ) . .self . m_bufferStart ] . into ( ) ,
28922892 & mut self . m_position ,
28932893 ) ;
2894- self . m_positionIdx = self . m_bufferStart ;
2894+ self . m_positionIdx = Some ( self . m_bufferStart ) ;
28952895
28962896 #[ cfg( feature = "mozilla" ) ]
28972897 {
@@ -3025,7 +3025,7 @@ pub unsafe extern "C" fn XML_GetCurrentLineNumber(mut parser: XML_Parser) -> XML
30253025 if parser. is_null ( ) {
30263026 return 0 ;
30273027 }
3028- let positionPtr = ( * parser) . m_buffer . as_ptr ( ) . wrapping_add ( ( * parser) . m_positionIdx ) ;
3028+ let positionPtr = ( * parser) . m_buffer . as_ptr ( ) . wrapping_add ( ( * parser) . m_positionIdx . unwrap ( ) ) ;
30293029 if !( * parser) . m_eventPtr . is_null ( ) && ( * parser) . m_eventPtr >= positionPtr {
30303030 ( * ( * parser) . m_encoding ) . updatePosition (
30313031 ExpatBufRef :: new (
@@ -3034,7 +3034,9 @@ pub unsafe extern "C" fn XML_GetCurrentLineNumber(mut parser: XML_Parser) -> XML
30343034 ) ,
30353035 & mut ( * parser) . m_position ,
30363036 ) ;
3037- ( * parser) . m_positionIdx = ( * parser) . m_eventPtr . wrapping_offset_from ( ( * parser) . m_buffer . as_ptr ( ) ) as usize ;
3037+ ( * parser) . m_positionIdx = Some (
3038+ ( * parser) . m_eventPtr . wrapping_offset_from ( ( * parser) . m_buffer . as_ptr ( ) ) as usize
3039+ ) ;
30383040 }
30393041 ( * parser) . m_position . lineNumber . wrapping_add ( 1 )
30403042}
@@ -3043,7 +3045,7 @@ pub unsafe extern "C" fn XML_GetCurrentColumnNumber(mut parser: XML_Parser) -> X
30433045 if parser. is_null ( ) {
30443046 return 0 ;
30453047 }
3046- let positionPtr = ( * parser) . m_buffer . as_ptr ( ) . wrapping_add ( ( * parser) . m_positionIdx ) ;
3048+ let positionPtr = ( * parser) . m_buffer . as_ptr ( ) . wrapping_add ( ( * parser) . m_positionIdx . unwrap ( ) ) ;
30473049 if !( * parser) . m_eventPtr . is_null ( ) && ( * parser) . m_eventPtr >= positionPtr {
30483050 ( * ( * parser) . m_encoding ) . updatePosition (
30493051 ExpatBufRef :: new (
@@ -3052,7 +3054,9 @@ pub unsafe extern "C" fn XML_GetCurrentColumnNumber(mut parser: XML_Parser) -> X
30523054 ) ,
30533055 & mut ( * parser) . m_position ,
30543056 ) ;
3055- ( * parser) . m_positionIdx = ( * parser) . m_eventPtr . wrapping_offset_from ( ( * parser) . m_buffer . as_ptr ( ) ) as usize ;
3057+ ( * parser) . m_positionIdx = Some (
3058+ ( * parser) . m_eventPtr . wrapping_offset_from ( ( * parser) . m_buffer . as_ptr ( ) ) as usize
3059+ ) ;
30563060 }
30573061 ( * parser) . m_position . columnNumber
30583062}
0 commit comments