From 2a128fa205f36074c8fbf4bc490e1ad0f76f38f6 Mon Sep 17 00:00:00 2001 From: Eric Holk Date: Fri, 15 Jun 2012 22:14:02 -0400 Subject: [PATCH] Reference fixes. --- src/libcore/arc.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/libcore/arc.rs b/src/libcore/arc.rs index 312606be906..eb11c8f1c54 100644 --- a/src/libcore/arc.rs +++ b/src/libcore/arc.rs @@ -102,11 +102,14 @@ impl methods for exclusive { fn with(f: fn(sys::condition, x: &T) -> U) -> U { unsafe { let ptr: ~arc_data> = unsafe::reinterpret_cast(*self); - let rec: &ex_data = &(*ptr).data; + let r = { + let rec: &ex_data = &(*ptr).data; + rec.lock.lock_cond() {|c| + f(c, &rec.data) + } + }; unsafe::forget(ptr); - rec.lock.lock_cond() {|c| - f(c, &rec.data) - } + r } } }