about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorSimon BD <simon@server>2012-10-24 19:21:39 -0500
committerSimon BD <simon@server>2012-10-24 19:21:39 -0500
commit046460c7f6ff9d196b0d4c9757bce15cf99e1070 (patch)
tree8cf5cd40726729c1567df6bf238128f34a6484f7 /src/libstd
parent19a59cb748b6715cd940eb6fa5ae4e1841dcfcf4 (diff)
downloadrust-046460c7f6ff9d196b0d4c9757bce15cf99e1070.tar.gz
rust-046460c7f6ff9d196b0d4c9757bce15cf99e1070.zip
Remove some code that MergeState used to prevent double frees
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/sort.rs34
1 files changed, 1 insertions, 33 deletions
diff --git a/src/libstd/sort.rs b/src/libstd/sort.rs
index 161d7fab81d..05d8533a353 100644
--- a/src/libstd/sort.rs
+++ b/src/libstd/sort.rs
@@ -353,40 +353,15 @@ struct RunState {
 
 struct MergeState<T> {
     mut min_gallop: uint,
-    //mut tmp: ~[T],
-    mut last_hi: bool,
-    mut last_bsort: bool,
     mut mergePt: uint,
     mut tmpPt: uint,
     mut array: &[mut T],
     runs: DVec<RunState>,
-
-    /*drop {
-        unsafe {
-            let size = self.tmp.len();
-            // Move tmp back into invalid part of array
-            if self.last_bsort {
-
-            } else if self.last_hi && size > 0 {
-                self.mergePt -= self.tmpPt;
-                move_vec(self.array, self.mergePt, self.tmp, 0, self.tmpPt);
-            } else if !self.last_hi && size-self.tmpPt > 0 {
-                move_vec(self.array, self.mergePt,
-                        self.tmp, self.tmpPt, size-self.tmpPt);
-            }
-            vec::raw::set_len(&mut self.tmp, 0);
-        }
-    }*/
 }
 
 fn MergeState<T>() -> MergeState<T> {
-    //let mut tmp = ~[];
-    //vec::reserve(&mut tmp, INITIAL_TMP_STORAGE);
     MergeState {
         min_gallop: MIN_GALLOP,
-        //tmp: move tmp,
-        last_hi: false,
-        last_bsort: false,
         mergePt: 0,
         tmpPt: 0,
         array: &[mut],
@@ -402,8 +377,6 @@ impl<T: Copy Ord> MergeState<T> {
 
         if start == 0 { start += 1; }
 
-        self.last_bsort = true;
-
         while start < size {
             let pivot = array[start];
             let mut left = 0;
@@ -425,7 +398,6 @@ impl<T: Copy Ord> MergeState<T> {
             array[left] = move pivot;
             start += 1;
         }
-        self.last_bsort = false;
     }
 
     fn push_run(&self, run_base: uint, run_len: uint) {
@@ -481,8 +453,6 @@ impl<T: Copy Ord> MergeState<T> {
                 base2: uint, len2: uint) {
         assert len1 != 0 && len2 != 0 && base1+len1 == base2;
 
-        //vec::reserve(&mut self.tmp, len1);
-        self.last_hi = false;
         let tmp = vec::to_mut(vec::slice(array, base1, base1+len1));
         self.tmpPt = 0;
         self.mergePt = base1;
@@ -598,8 +568,6 @@ impl<T: Copy Ord> MergeState<T> {
                 base2: uint, len2: uint) {
         assert len1 != 1 && len2 != 0 && base1 + len1 == base2;
 
-        self.last_hi = true;
-
         let tmp = vec::to_mut(vec::slice(array, base2, base2+len2));
 
         let mut c1 = base1 + len1 - 1;
@@ -755,7 +723,7 @@ impl<T: Copy Ord> MergeState<T> {
 fn copy_vec<T: Copy>(dest: &[mut T], s1: uint,
                     from: &[const T], s2: uint, len: uint) {
     assert s1+len <= dest.len() && s2+len <= from.len();
-    
+
     let slice = vec::slice(from, s2, s2+len);
     for slice.eachi |i, v| {
         dest[s1+i] = *v;