diff options
| author | bors <bors@rust-lang.org> | 2014-06-11 04:22:02 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-06-11 04:22:02 -0700 |
| commit | db9e0a1142ee1f57d27201f9bfb33d28e44f6355 (patch) | |
| tree | 4adbee8117b013e03caf439055220cb4428f5f45 | |
| parent | 4fdc27e55ec9cda0ab5315701a96d25e720ce2c3 (diff) | |
| parent | 4fecc503ee6f4fcd97d0d9421bfed279dd67ac6c (diff) | |
| download | rust-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.rs | 3 |
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() { |
