Skip to content

Commit ce49670

Browse files
committed
Replace casts with try_into()
These conversions should be infallible, so panic on failure. Panicking here would indicate a fundamental logic error and should not be possible due to bad input.
1 parent 5f779a9 commit ce49670

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

mp4parse_capi/src/lib.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ use byteorder::WriteBytesExt;
4343
use num::{CheckedAdd, CheckedSub};
4444
use num::{PrimInt, Zero};
4545
use std::convert::TryFrom;
46+
use std::convert::TryInto;
4647

4748
use std::io::Read;
4849
use std::ops::Neg;
@@ -1394,7 +1395,10 @@ fn sample_to_chunk_iter<'a>(
13941395
chunks: (0..0),
13951396
sample_count: 0,
13961397
stsc_peek_iter: stsc_samples.as_slice().iter().peekable(),
1397-
remain_chunk_count: stco_offsets.len() as u32,
1398+
remain_chunk_count: stco_offsets
1399+
.len()
1400+
.try_into()
1401+
.expect("stco.entry_count is u32"),
13981402
}
13991403
}
14001404

@@ -1412,7 +1416,12 @@ impl<'a> Iterator for SampleToChunkIterator<'a> {
14121416
let has_chunk = self.chunks.next().or_else(|| {
14131417
self.chunks = self.locate();
14141418
self.remain_chunk_count
1415-
.checked_sub(self.chunks.len() as u32)
1419+
.checked_sub(
1420+
self.chunks
1421+
.len()
1422+
.try_into()
1423+
.expect("len() of a Range<u32> must fit in u32"),
1424+
)
14161425
.and_then(|res| {
14171426
self.remain_chunk_count = res;
14181427
self.chunks.next()

0 commit comments

Comments
 (0)