Skip to content

Commit bf49952

Browse files
authored
Merge pull request RustPython#3769 from youknowone/wrap-index
wrap_index without abs
2 parents 491bd0e + 1d1ff8d commit bf49952

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

vm/src/sliceable.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -308,14 +308,15 @@ impl SequenceIndexOp for isize {
308308
}
309309

310310
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 {
311+
let mut p = *self;
312+
if p < 0 {
313+
// casting to isize is ok because it is used by wrapping_add
314+
p = p.wrapping_add(len as isize);
315+
}
316+
if p < 0 || (p as usize) >= len {
316317
None
317318
} else {
318-
Some(p)
319+
Some(p as usize)
319320
}
320321
}
321322
}

0 commit comments

Comments
 (0)