Skip to content

Commit 28928b6

Browse files
authored
Merge pull request #3 from ilaril/master
Get rid of mem::uninitialized()
2 parents f580510 + 476b539 commit 28928b6

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

src/dmsort.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Copyright (c) 2017 Emil Ernerfeldt
22

33
use std::cmp::Ordering;
4-
use std::mem;
54
use std::ptr;
65

76
// ----------------------------------------------------------------------------
@@ -216,8 +215,9 @@ impl<'a, T> Drop for DmSorter<'a, T> {
216215
#[inline(always)]
217216
unsafe fn unsafe_push<T>(vec: &mut Vec<T>, value: &T) {
218217
let old_len = vec.len();
219-
vec.push(mem::uninitialized::<T>());
218+
vec.reserve(1);
220219
ptr::copy_nonoverlapping(value, vec.get_unchecked_mut(old_len), 1);
220+
vec.set_len(old_len + 1);
221221
}
222222

223223
#[inline(always)]
@@ -303,10 +303,9 @@ fn sort_move_by<T, F>(slice: &mut [T], mut compare: F)
303303
// Append s.slice[read..(read + num_backtracked)] to s.dropped:
304304
{
305305
let old_len = s.dropped.len();
306-
for _ in 0..num_backtracked {
307-
s.dropped.push(mem::uninitialized::<T>());
308-
}
306+
s.dropped.reserve(num_backtracked);
309307
ptr::copy_nonoverlapping(s.slice.get_unchecked(s.write), s.dropped.get_unchecked_mut(old_len), num_backtracked);
308+
s.dropped.set_len(old_len + num_backtracked);
310309
}
311310

312311
num_dropped_in_row = 0;

0 commit comments

Comments
 (0)