2022-07-08 11:08:32 -05:00
|
|
|
//@ignore-windows: No libc on Windows
|
2021-12-06 15:15:02 -06:00
|
|
|
#![feature(rustc_private)]
|
|
|
|
|
|
|
|
/// Test that destroying a pthread_mutex twice fails, even without a check for number validity
|
|
|
|
extern crate libc;
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
unsafe {
|
|
|
|
use core::mem::MaybeUninit;
|
|
|
|
|
|
|
|
let mut attr = MaybeUninit::<libc::pthread_mutexattr_t>::uninit();
|
|
|
|
libc::pthread_mutexattr_init(attr.as_mut_ptr());
|
|
|
|
|
|
|
|
let mut mutex = MaybeUninit::<libc::pthread_mutex_t>::uninit();
|
|
|
|
|
|
|
|
libc::pthread_mutex_init(mutex.as_mut_ptr(), attr.as_ptr());
|
|
|
|
|
|
|
|
libc::pthread_mutex_destroy(mutex.as_mut_ptr());
|
|
|
|
|
|
|
|
libc::pthread_mutex_destroy(mutex.as_mut_ptr());
|
2022-07-11 06:44:55 -05:00
|
|
|
//~^ ERROR: Undefined Behavior: using uninitialized data, but this operation requires initialized memory
|
2021-12-06 15:15:02 -06:00
|
|
|
}
|
|
|
|
}
|