about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/sort.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/libstd/sort.rs b/src/libstd/sort.rs
index cce3dc725da..3017d95f2a7 100644
--- a/src/libstd/sort.rs
+++ b/src/libstd/sort.rs
@@ -630,9 +630,15 @@ impl<T: Copy Ord> MergeState<T> {
                 dest -= 1; c2 -= 1; len2 -= 1;
                 if len2 == 1 { break_outer = true; break; }
 
-                let tmp_view = vec::mut_view(tmp, 0, len2);
-                let count2 = len2 - gallop_left(&const array[c1],
-                                                tmp_view, len2-1);
+                let count2;
+                {
+                    let tmp_view = vec::mut_view(tmp, 0, len2);
+                    count2 = len2 - gallop_left(&const array[c1],
+                                                tmp_view,
+                                                len2-1);
+                    // Make tmp_view go out of scope to appease borrowck.
+                }
+
                 if count2 != 0 {
                     dest -= count2; c2 -= count2; len2 -= count2;
                     copy_vec(array, dest+1, tmp, c2+1, count2);