Skip to content
This repository was archived by the owner on Feb 10, 2026. It is now read-only.

Commit 432051f

Browse files
committed
Convert m_positionIdx into Option<usize>
1 parent 08cca75 commit 432051f

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

src/lib/xmlparse.rs

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)