melib: StackVec bounds fix

sql
Manos Pitsidianakis 2019-11-09 17:46:07 +02:00
parent 1bd343988e
commit 8b781cbbe0
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
1 changed files with 4 additions and 4 deletions

View File

@ -81,7 +81,7 @@ impl<T: Default + Copy + std::fmt::Debug> StackVec<T> {
} }
} }
pub fn remove(&mut self, i: usize) -> 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.len -= 1;
self.heap_vec.remove(i) self.heap_vec.remove(i)
} else { } else {
@ -96,9 +96,9 @@ impl<T: Default + Copy + std::fmt::Debug> StackVec<T> {
pub fn set(&mut self, i: usize, val: T) { pub fn set(&mut self, i: usize, val: T) {
debug_assert!(i < self.len); debug_assert!(i < self.len);
if self.len >= self.array.len() { if self.len > self.array.len() {
self.heap_vec[i] = val; self.heap_vec[i] = val;
if i + 1 < self.array.len() { if i < self.array.len() {
self.array[i] = val; self.array[i] = val;
} }
} else { } else {
@ -146,7 +146,7 @@ impl<T: Default + Copy + std::fmt::Debug> Index<usize> for StackVec<T> {
type Output = T; type Output = T;
fn index(&self, idx: usize) -> &T { fn index(&self, idx: usize) -> &T {
if self.len >= self.array.len() { if self.len > self.array.len() {
&self.heap_vec[idx] &self.heap_vec[idx]
} else { } else {
&self.array[idx] &self.array[idx]