about summary refs log tree commit diff
path: root/src/libstd/rand.rs
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-07-12 01:38:44 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-07-14 09:29:12 -0700
commite3211fa1f1f24268b91b0c89cb312e70499d41f3 (patch)
treeadcfe3900f33641ac4c73bff3e61f048d7270157 /src/libstd/rand.rs
parent242606c79339e2d2e3cf15cc8f02bd6ebc0b8c44 (diff)
downloadrust-e3211fa1f1f24268b91b0c89cb312e70499d41f3.tar.gz
rust-e3211fa1f1f24268b91b0c89cb312e70499d41f3.zip
Purge the last remnants of the old TLS api
Closes #3273
Diffstat (limited to 'src/libstd/rand.rs')
-rw-r--r--src/libstd/rand.rs16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/libstd/rand.rs b/src/libstd/rand.rs
index 2cf45ba70ec..8551012d6d7 100644
--- a/src/libstd/rand.rs
+++ b/src/libstd/rand.rs
@@ -851,7 +851,10 @@ pub fn seed() -> ~[u8] {
 }
 
 // used to make space in TLS for a random number generator
+#[cfg(stage0)]
 fn tls_rng_state(_v: @@mut IsaacRng) {}
+#[cfg(not(stage0))]
+static tls_rng_state: local_data::Key<@@mut IsaacRng> = &[];
 
 /**
  * Gives back a lazily initialized task-local random number generator,
@@ -860,17 +863,12 @@ fn tls_rng_state(_v: @@mut IsaacRng) {}
  */
 #[inline]
 pub fn task_rng() -> @mut IsaacRng {
-    let r : Option<@@mut IsaacRng>;
-    unsafe {
-        r = local_data::get(tls_rng_state, |k| k.map(|&k| *k));
-    }
+    let r = local_data::get(tls_rng_state, |k| k.map(|&k| *k));
     match r {
         None => {
-            unsafe {
-                let rng = @@mut IsaacRng::new_seeded(seed());
-                local_data::set(tls_rng_state, rng);
-                *rng
-            }
+            let rng = @@mut IsaacRng::new_seeded(seed());
+            local_data::set(tls_rng_state, rng);
+            *rng
         }
         Some(rng) => *rng
     }