@@ -2200,7 +2200,7 @@ impl<T> SpecFromIter<T, IntoIter<T>> for Vec<T> {
2200
2200
let has_advanced = iterator. buf . as_ptr ( ) as * const _ != iterator. ptr ;
2201
2201
if !has_advanced || iterator. len ( ) >= iterator. cap / 2 {
2202
2202
// Safety: passing 0 is always valid
2203
- return unsafe { iterator. into_vec ( 0 ) } ;
2203
+ return unsafe { iterator. into_vec_with_uninit_prefix ( 0 ) } ;
2204
2204
}
2205
2205
2206
2206
let mut vec = Vec :: new ( ) ;
@@ -2394,7 +2394,7 @@ impl<T> SpecExtend<T, IntoIter<T>> for Vec<T> {
2394
2394
// Safety: we just checked that IntoIter has sufficient capacity to prepend our elements.
2395
2395
// Prepending will then fill the uninitialized prefix.
2396
2396
* self = unsafe {
2397
- let mut v = iterator. into_vec ( self . len ( ) as isize ) ;
2397
+ let mut v = iterator. into_vec_with_uninit_prefix ( self . len ( ) as isize ) ;
2398
2398
ptr:: copy_nonoverlapping ( self . as_ptr ( ) , v. as_mut_ptr ( ) , self . len ) ;
2399
2399
self . set_len ( 0 ) ;
2400
2400
v
@@ -2946,7 +2946,7 @@ impl<T> IntoIter<T> {
2946
2946
/// * `offset + self.len()` must not exceed `self.cap`
2947
2947
/// * `offset == 0` is always valid
2948
2948
/// * `offset` must be positive
2949
- unsafe fn into_vec ( self , offset : isize ) -> Vec < T > {
2949
+ unsafe fn into_vec_with_uninit_prefix ( self , offset : isize ) -> Vec < T > {
2950
2950
let dst = unsafe { self . buf . as_ptr ( ) . offset ( offset) } ;
2951
2951
if self . ptr != dst as * const _ {
2952
2952
unsafe { ptr:: copy ( self . ptr , dst, self . len ( ) ) }
0 commit comments