Skip to content

Commit dc3b8fe

Browse files
committed
avoid importing C functions in alloc_write_race test
1 parent 6df06b4 commit dc3b8fe

File tree

1 file changed

+3
-7
lines changed

1 file changed

+3
-7
lines changed

tests/compile-fail/data_race/alloc_write_race.rs

+3-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// ignore-windows: Concurrency on Windows is not supported yet.
2+
#![feature(new_uninit)]
23

34
use std::thread::spawn;
45
use std::ptr::null_mut;
@@ -10,11 +11,6 @@ struct EvilSend<T>(pub T);
1011
unsafe impl<T> Send for EvilSend<T> {}
1112
unsafe 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-
1814
pub 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
}

0 commit comments

Comments
 (0)