about summary refs log tree commit diff
path: root/src/tools/miri/tests/pass-dep/libc/libc-strerror_r.rs
blob: 09885ce839d0f77a2a4da2fd00f7674d32451e57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//@ignore-target: windows # Supported only on unixes

fn main() {
    unsafe {
        let mut buf = vec![0u8; 32];
        assert_eq!(libc::strerror_r(libc::EPERM, buf.as_mut_ptr().cast(), buf.len()), 0);
        let mut buf2 = vec![0u8; 64];
        assert_eq!(libc::strerror_r(-1i32, buf2.as_mut_ptr().cast(), buf2.len()), 0);
        // This buffer is deliberately too small so this triggers ERANGE.
        let mut buf3 = vec![0u8; 2];
        assert_eq!(
            libc::strerror_r(libc::E2BIG, buf3.as_mut_ptr().cast(), buf3.len()),
            libc::ERANGE
        );
    }
}