about summary refs log tree commit diff
path: root/src/libstd/sys/unix/weak.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd/sys/unix/weak.rs')
-rw-r--r--src/libstd/sys/unix/weak.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/libstd/sys/unix/weak.rs b/src/libstd/sys/unix/weak.rs
index 2cbcd62f533..e6f85c08d12 100644
--- a/src/libstd/sys/unix/weak.rs
+++ b/src/libstd/sys/unix/weak.rs
@@ -61,7 +61,11 @@ impl<F> Weak<F> {
             if self.addr.load(Ordering::SeqCst) == 1 {
                 self.addr.store(fetch(self.name), Ordering::SeqCst);
             }
-            mem::transmute::<&AtomicUsize, Option<&F>>(&self.addr)
+            if self.addr.load(Ordering::SeqCst) == 0 {
+                None
+            } else {
+                mem::transmute::<&AtomicUsize, Option<&F>>(&self.addr)
+            }
         }
     }
 }