We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
2 parents 491bd0e + 1d1ff8d commit bf49952Copy full SHA for bf49952
vm/src/sliceable.rs
@@ -308,14 +308,15 @@ impl SequenceIndexOp for isize {
308
}
309
310
fn wrapped_at(&self, len: usize) -> Option<usize> {
311
- let neg = self.is_negative();
312
- let p = self.unsigned_abs();
313
- if neg {
314
- len.checked_sub(p)
315
- } else if p >= len {
+ let mut p = *self;
+ if p < 0 {
+ // casting to isize is ok because it is used by wrapping_add
+ p = p.wrapping_add(len as isize);
+ }
316
+ if p < 0 || (p as usize) >= len {
317
None
318
} else {
- Some(p)
319
+ Some(p as usize)
320
321
322
0 commit comments