File tree Expand file tree Collapse file tree 1 file changed +15
-1
lines changed Expand file tree Collapse file tree 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> {
4242
4343 assert ! ( new_size > 0 ) ;
4444 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+ }
4654 Less => {
4755 self . truncate ( new_size) ;
4856 debug_assert_eq ! ( self . len( ) , new_size) ;
@@ -95,6 +103,12 @@ mod tests {
95103 let new_size = Poolable :: capacity ( & v) + i;
96104 v. realloc ( new_size) ;
97105 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) ;
98112 }
99113 }
100114}
You can’t perform that action at this time.
0 commit comments