Skip to content

Commit 1735e41

Browse files
committed
Fallout: AtomicPtr needs phantom data to indicate that it contains an unsafe pointer.
1 parent 2bcf3a4 commit 1735e41

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/libcore/atomic.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ use marker::Sync;
7676

7777
use intrinsics;
7878
use cell::UnsafeCell;
79+
use marker::PhantomData;
7980

8081
/// A boolean type which can be safely shared between threads.
8182
#[stable(feature = "rust1", since = "1.0.0")]
@@ -105,6 +106,7 @@ unsafe impl Sync for AtomicUsize {}
105106
#[stable(feature = "rust1", since = "1.0.0")]
106107
pub struct AtomicPtr<T> {
107108
p: UnsafeCell<usize>,
109+
_marker: PhantomData<*mut T>,
108110
}
109111

110112
unsafe impl<T> Sync for AtomicPtr<T> {}
@@ -791,7 +793,8 @@ impl<T> AtomicPtr<T> {
791793
#[inline]
792794
#[stable(feature = "rust1", since = "1.0.0")]
793795
pub fn new(p: *mut T) -> AtomicPtr<T> {
794-
AtomicPtr { p: UnsafeCell::new(p as usize) }
796+
AtomicPtr { p: UnsafeCell::new(p as usize),
797+
_marker: PhantomData }
795798
}
796799

797800
/// Loads a value from the pointer.

0 commit comments

Comments
 (0)