bitvec icon indicating copy to clipboard operation
bitvec copied to clipboard

Panic on subtract with overflow in last_one with Msb0

Open Dr-Emann opened this issue 2 years ago • 0 comments

Using current main branch, using the following code panics:

let b = bits![usize, Msb0; 0];
println!("{:?}", b.last_one());
thread 'main' panicked at 'attempt to subtract with overflow', /Users/zach/.cargo/git/checkouts/bitvec-d0c4461fa4fde381/7d31e86/src/slice/specialization/msb0.rs:178:21
stack backtrace:
   0: rust_begin_unwind
             at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panicking.rs:498:5
   1: core::panicking::panic_fmt
             at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/panicking.rs:116:14
   2: core::panicking::panic
             at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/panicking.rs:48:5
   3: bitvec::slice::specialization::msb0::<impl bitvec::slice::BitSlice<T,bitvec::order::Msb0>>::sp_last_one
             at /Users/zach/.cargo/git/checkouts/bitvec-d0c4461fa4fde381/7d31e86/src/slice/specialization/msb0.rs:178:6
   4: <bitvec::slice::iter::IterOnes<T,O> as core::iter::traits::double_ended::DoubleEndedIterator>::next_back
             at /Users/zach/.cargo/git/checkouts/bitvec-d0c4461fa4fde381/7d31e86/src/slice/iter.rs:2129:4
   5: bitvec::slice::BitSlice<T,O>::last_one
             at /Users/zach/.cargo/git/checkouts/bitvec-d0c4461fa4fde381/7d31e86/src/slice.rs:1203:3
   6: bits_last_one::main
             at ./src/main.rs:5:22
   7: core::ops::function::FnOnce::call_once
             at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/ops/function.rs:227:5

This does not panic if Lsb0 is used instead.

Dr-Emann avatar Mar 13 '22 02:03 Dr-Emann