about summary refs log tree commit diff
path: root/src/libstd/rt/task.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-11-01 18:06:31 -0700
committerBrian Anderson <banderson@mozilla.com>2014-01-04 14:44:12 -0800
commit3b1862a82f04f8f5bcb197715d2ff506c6cdecc3 (patch)
tree0057a02e6d56e9bea0357d649a420b6e66b5be71 /src/libstd/rt/task.rs
parent18cef3fad47f90c6c5ec1f2ad4dbc12b86b7ee7e (diff)
downloadrust-3b1862a82f04f8f5bcb197715d2ff506c6cdecc3.tar.gz
rust-3b1862a82f04f8f5bcb197715d2ff506c6cdecc3.zip
Don't allow newtype structs to be dereferenced. #6246
Diffstat (limited to 'src/libstd/rt/task.rs')
-rw-r--r--src/libstd/rt/task.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs
index 41819421be8..3efa979e515 100644
--- a/src/libstd/rt/task.rs
+++ b/src/libstd/rt/task.rs
@@ -153,9 +153,13 @@ impl Task {
                 // annihilated invoke TLS. Sadly these two operations seemed to
                 // be intertwined, and miraculously work for now...
                 let mut task = Local::borrow(None::<Task>);
-                let storage = task.get().storage.take();
+                let storage_map = {
+                    let task = task.get();
+                    let LocalStorage(ref mut optmap) = task.storage;
+                    optmap.take()
+                };
                 drop(task);
-                drop(storage);
+                drop(storage_map);
 
                 // Destroy remaining boxes. Also may run user dtors.
                 unsafe { cleanup::annihilate(); }