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 {
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]