From dc3862bf58297b75a0e3d4dfdf1f66b56f51dd1d Mon Sep 17 00:00:00 2001 From: Eric Holk Date: Thu, 14 Jun 2012 19:32:55 -0700 Subject: [PATCH] This was unsafe, and will probably leak. --- src/libcore/vec.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/libcore/vec.rs b/src/libcore/vec.rs index 4455dbd2426..a80acc67e42 100644 --- a/src/libcore/vec.rs +++ b/src/libcore/vec.rs @@ -379,16 +379,21 @@ fn shift(&v: [T]) -> T { v <-> vv; unsafe { - let vv = unsafe::to_ptr(vv); - let r <- *vv; + let mut rr; + { + let vv = unsafe::to_ptr(vv); + let mut r <- *vv; - for uint::range(1u, ln) {|i| - // FIXME: this isn't legal, per se... - let r <- *ptr::offset(vv, i); - push(v, r); + for uint::range(1u, ln) {|i| + // FIXME: this isn't legal, per se... + let r <- *ptr::offset(vv, i); + push(v, r); + } + rr <- r; } + unsafe::set_len(vv, 0u); - r + rr } }