Skip to content

Commit 93ff65b

Browse files
authored
Merge pull request #16 from Nemo157/fix-resize
Fix TinyVec::resize across inline/heap boundary
2 parents fd3ce48 + 3335c63 commit 93ff65b

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/tiny_vec.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,12 @@ impl<A: Arrayish> TinyVec<A> {
405405
A::Item: Clone,
406406
{
407407
match self {
408-
TinyVec::Inline(a) => a.resize(new_len, new_val),
408+
TinyVec::Inline(a) => if new_len > A::CAPACITY {
409+
self.move_to_the_heap();
410+
self.resize(new_len, new_val);
411+
} else {
412+
a.resize(new_len, new_val);
413+
},
409414
TinyVec::Heap(v) => v.resize(new_len, new_val),
410415
}
411416
}

tests/tinyvec.rs

+7
Original file line numberDiff line numberDiff line change
@@ -48,3 +48,10 @@ fn TinyVec_drain() {
4848
assert_eq!(Vec::from_iter(tv.clone().drain(1..=1)), vec![2]);
4949
assert_eq!(Vec::from_iter(tv.clone().drain(1..=2)), vec![2, 3]);
5050
}
51+
52+
#[test]
53+
fn TinyVec_resize() {
54+
let mut tv: TinyVec<[i32; 10]> = Default::default();
55+
tv.resize(20, 5);
56+
assert_eq!(&tv[..], &[5; 20]);
57+
}

0 commit comments

Comments
 (0)