melib: StackVec bounds fix
parent
1bd343988e
commit
8b781cbbe0
|
@ -81,7 +81,7 @@ impl<T: Default + Copy + std::fmt::Debug> StackVec<T> {
|
|||
}
|
||||
}
|
||||
pub fn remove(&mut self, i: usize) -> T {
|
||||
if self.len >= self.array.len() {
|
||||
if self.len > self.array.len() {
|
||||
self.len -= 1;
|
||||
self.heap_vec.remove(i)
|
||||
} else {
|
||||
|
@ -96,9 +96,9 @@ impl<T: Default + Copy + std::fmt::Debug> StackVec<T> {
|
|||
|
||||
pub fn set(&mut self, i: usize, val: T) {
|
||||
debug_assert!(i < self.len);
|
||||
if self.len >= self.array.len() {
|
||||
if self.len > self.array.len() {
|
||||
self.heap_vec[i] = val;
|
||||
if i + 1 < self.array.len() {
|
||||
if i < self.array.len() {
|
||||
self.array[i] = val;
|
||||
}
|
||||
} else {
|
||||
|
@ -146,7 +146,7 @@ impl<T: Default + Copy + std::fmt::Debug> Index<usize> for StackVec<T> {
|
|||
type Output = T;
|
||||
|
||||
fn index(&self, idx: usize) -> &T {
|
||||
if self.len >= self.array.len() {
|
||||
if self.len > self.array.len() {
|
||||
&self.heap_vec[idx]
|
||||
} else {
|
||||
&self.array[idx]
|
||||
|
|
Loading…
Reference in New Issue