diff --git a/vm/src/builtins/slice.rs b/vm/src/builtins/slice.rs index 68e5d6886..add827d7d 100644 --- a/vm/src/builtins/slice.rs +++ b/vm/src/builtins/slice.rs @@ -368,13 +368,15 @@ impl SaturatedSliceIter { impl Iterator for SaturatedSliceIter { type Item = usize; + fn next(&mut self) -> Option { if self.len == 0 { return None; } self.len -= 1; let ret = self.index as usize; - self.index += self.step; + // SAFETY: if index is overflowed, len should be zero + self.index = self.index.wrapping_add(self.step); Some(ret) } }