about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-06-11 04:22:02 -0700
committerbors <bors@rust-lang.org>2014-06-11 04:22:02 -0700
commitdb9e0a1142ee1f57d27201f9bfb33d28e44f6355 (patch)
tree4adbee8117b013e03caf439055220cb4428f5f45
parent4fdc27e55ec9cda0ab5315701a96d25e720ce2c3 (diff)
parent4fecc503ee6f4fcd97d0d9421bfed279dd67ac6c (diff)
downloadrust-db9e0a1142ee1f57d27201f9bfb33d28e44f6355.tar.gz
rust-db9e0a1142ee1f57d27201f9bfb33d28e44f6355.zip
auto merge of #14787 : alexcrichton/rust/issue-14784, r=pcwalton
This is another case of #13246. The RAII lock wasn't being destroyed until after
the allocation was free'd due to destructor scheduling.

Closes #14784
-rw-r--r--src/librustrt/at_exit_imp.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/librustrt/at_exit_imp.rs b/src/librustrt/at_exit_imp.rs
index d38d06950bf..2f1c38c5686 100644
--- a/src/librustrt/at_exit_imp.rs
+++ b/src/librustrt/at_exit_imp.rs
@@ -54,7 +54,8 @@ pub fn run() {
         rtassert!(queue != 0);
 
         let queue: Box<Queue> = mem::transmute(queue);
-        mem::replace(&mut *queue.lock(), Vec::new())
+        let v = mem::replace(&mut *queue.lock(), Vec::new());
+        v
     };
 
     for to_run in cur.move_iter() {