File tree 1 file changed +15
-1
lines changed
1 file changed +15
-1
lines changed Original file line number Diff line number Diff line change @@ -42,7 +42,15 @@ impl<T: Default + Clone> Realloc for Vec<T> {
42
42
43
43
assert ! ( new_size > 0 ) ;
44
44
match new_size. cmp ( & self . len ( ) ) {
45
- Greater => self . resize ( new_size, T :: default ( ) ) ,
45
+ Greater => {
46
+ self . reserve_exact ( new_size - self . len ( ) ) ;
47
+ debug_assert_eq ! ( self . capacity( ) , new_size) ;
48
+ self . resize ( new_size, T :: default ( ) ) ;
49
+ debug_assert_eq ! ( self . len( ) , new_size) ;
50
+
51
+ // Check that resize() did not reserve additional space.
52
+ debug_assert_eq ! ( self . capacity( ) , new_size) ;
53
+ }
46
54
Less => {
47
55
self . truncate ( new_size) ;
48
56
debug_assert_eq ! ( self . len( ) , new_size) ;
@@ -95,6 +103,12 @@ mod tests {
95
103
let new_size = Poolable :: capacity ( & v) + i;
96
104
v. realloc ( new_size) ;
97
105
assert_eq ! ( Poolable :: capacity( & v) , new_size) ;
106
+
107
+ // Length of the vectory and underlying buffer
108
+ // for poolable vectors should
109
+ // be exactly of the requested size.
110
+ assert_eq ! ( v. len( ) , new_size) ;
111
+ assert_eq ! ( v. capacity( ) , new_size) ;
98
112
}
99
113
}
100
114
}
You can’t perform that action at this time.
0 commit comments