File tree Expand file tree Collapse file tree 1 file changed +3
-7
lines changed
tests/compile-fail/data_race Expand file tree Collapse file tree 1 file changed +3
-7
lines changed Original file line number Diff line number Diff line change 11// ignore-windows: Concurrency on Windows is not supported yet.
2+ #![ feature( new_uninit) ]
23
34use std:: thread:: spawn;
45use std:: ptr:: null_mut;
@@ -10,11 +11,6 @@ struct EvilSend<T>(pub T);
1011unsafe impl < T > Send for EvilSend < T > { }
1112unsafe impl < T > Sync for EvilSend < T > { }
1213
13- extern "C" {
14- fn malloc ( size : usize ) -> * mut u8 ;
15- fn free ( ptr : * mut u8 ) ;
16- }
17-
1814pub fn main ( ) {
1915 // Shared atomic pointer
2016 let pointer = AtomicPtr :: new ( null_mut :: < usize > ( ) ) ;
@@ -33,7 +29,7 @@ pub fn main() {
3329 // Uses relaxed semantics to not generate
3430 // a release sequence.
3531 let pointer = & * ptr. 0 ;
36- pointer. store ( malloc ( std :: mem :: size_of :: < usize > ( ) ) as * mut usize , Ordering :: Relaxed ) ;
32+ pointer. store ( Box :: into_raw ( Box :: < usize > :: new_uninit ( ) ) as * mut usize , Ordering :: Relaxed ) ;
3733 } ) ;
3834
3935 let j2 = spawn ( move || {
@@ -45,6 +41,6 @@ pub fn main() {
4541 j2. join ( ) . unwrap ( ) ;
4642
4743 // Clean up memory, will never be executed
48- free ( pointer. load ( Ordering :: Relaxed ) as * mut _ ) ;
44+ drop ( Box :: from_raw ( pointer. load ( Ordering :: Relaxed ) ) ) ;
4945 }
5046}
You can’t perform that action at this time.
0 commit comments