]> git.lizzy.rs Git - rust.git/commitdiff
avoid importing C functions in alloc_write_race test
authorRalf Jung <post@ralfj.de>
Mon, 17 May 2021 11:56:00 +0000 (13:56 +0200)
committerRalf Jung <post@ralfj.de>
Wed, 19 May 2021 13:27:58 +0000 (15:27 +0200)
tests/compile-fail/data_race/alloc_write_race.rs

index d9f5af396a2d8c15424ec0c6503f3d80cd639b82..becebe6a122a97fdf40cc3b695b6222439bc8ddd 100644 (file)
@@ -1,4 +1,5 @@
 // ignore-windows: Concurrency on Windows is not supported yet.
 // ignore-windows: Concurrency on Windows is not supported yet.
+#![feature(new_uninit)]
 
 use std::thread::spawn;
 use std::ptr::null_mut;
 
 use std::thread::spawn;
 use std::ptr::null_mut;
 unsafe impl<T> Send for EvilSend<T> {}
 unsafe impl<T> Sync for EvilSend<T> {}
 
 unsafe impl<T> Send for EvilSend<T> {}
 unsafe impl<T> Sync for EvilSend<T> {}
 
-extern "C" {
-    fn malloc(size: usize) -> *mut u8;
-    fn free(ptr: *mut u8);
-}
-
 pub fn main() {
     // Shared atomic pointer
     let pointer = AtomicPtr::new(null_mut::<usize>());
 pub fn main() {
     // Shared atomic pointer
     let pointer = AtomicPtr::new(null_mut::<usize>());
@@ -33,7 +29,7 @@ pub fn main() {
             // Uses relaxed semantics to not generate
             // a release sequence.
             let pointer = &*ptr.0;
             // Uses relaxed semantics to not generate
             // a release sequence.
             let pointer = &*ptr.0;
-            pointer.store(malloc(std::mem::size_of::<usize>()) as *mut usize, Ordering::Relaxed);
+            pointer.store(Box::into_raw(Box::<usize>::new_uninit()) as *mut usize, Ordering::Relaxed);
         });
 
         let j2 = spawn(move || {
         });
 
         let j2 = spawn(move || {
@@ -45,6 +41,6 @@ pub fn main() {
         j2.join().unwrap();
 
         // Clean up memory, will never be executed
         j2.join().unwrap();
 
         // Clean up memory, will never be executed
-        free(pointer.load(Ordering::Relaxed) as *mut _);
+        drop(Box::from_raw(pointer.load(Ordering::Relaxed)));
     }
 }
     }
 }