diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2015-02-12 10:47:02 -0500 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2015-02-18 10:25:12 -0500 |
| commit | 1735e41d1cbbe0666e188ccf3a064e5c8afb482c (patch) | |
| tree | ef18dda76f14cf842fe66e02c213233de1518c41 /src | |
| parent | 2bcf3a4cd15f706dcb07b1835babeea15b8aa8c1 (diff) | |
| download | rust-1735e41d1cbbe0666e188ccf3a064e5c8afb482c.tar.gz rust-1735e41d1cbbe0666e188ccf3a064e5c8afb482c.zip | |
Fallout: AtomicPtr needs phantom data to indicate that it contains an unsafe pointer.
Diffstat (limited to 'src')
| -rw-r--r-- | src/libcore/atomic.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libcore/atomic.rs b/src/libcore/atomic.rs index 05d864accc1..6afe5b2257d 100644 --- a/src/libcore/atomic.rs +++ b/src/libcore/atomic.rs @@ -76,6 +76,7 @@ use marker::Sync; use intrinsics; use cell::UnsafeCell; +use marker::PhantomData; /// A boolean type which can be safely shared between threads. #[stable(feature = "rust1", since = "1.0.0")] @@ -105,6 +106,7 @@ unsafe impl Sync for AtomicUsize {} #[stable(feature = "rust1", since = "1.0.0")] pub struct AtomicPtr<T> { p: UnsafeCell<usize>, + _marker: PhantomData<*mut T>, } unsafe impl<T> Sync for AtomicPtr<T> {} @@ -791,7 +793,8 @@ impl<T> AtomicPtr<T> { #[inline] #[stable(feature = "rust1", since = "1.0.0")] pub fn new(p: *mut T) -> AtomicPtr<T> { - AtomicPtr { p: UnsafeCell::new(p as usize) } + AtomicPtr { p: UnsafeCell::new(p as usize), + _marker: PhantomData } } /// Loads a value from the pointer. |
