rust/tests/ui/issues/issue-13259-windows-tcb-trash.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

40 lines
972 B
Rust
Raw Normal View History

//@ run-pass
2014-09-29 18:34:53 +00:00
#[cfg(windows)]
mod imp {
type LPVOID = *mut u8;
type DWORD = u32;
type LPWSTR = *mut u16;
2014-09-29 18:34:53 +00:00
extern "system" {
fn FormatMessageW(flags: DWORD,
lpSrc: LPVOID,
msgId: DWORD,
langId: DWORD,
buf: LPWSTR,
nsize: DWORD,
args: *const u8)
2014-09-29 18:34:53 +00:00
-> DWORD;
}
pub fn test() {
let mut buf: [u16; 50] = [0; 50];
2014-09-29 18:34:53 +00:00
let ret = unsafe {
FormatMessageW(0x1000, core::ptr::null_mut(), 1, 0x400,
buf.as_mut_ptr(), buf.len() as u32, core::ptr::null())
2014-09-29 18:34:53 +00:00
};
// On some 32-bit Windowses (Win7-8 at least) this will panic with segmented
2014-09-29 18:34:53 +00:00
// stacks taking control of pvArbitrary
assert!(ret != 0);
}
}
2014-09-29 18:34:53 +00:00
#[cfg(not(windows))]
mod imp {
pub fn test() { }
}
2014-09-29 18:34:53 +00:00
fn main() {
2014-09-29 18:34:53 +00:00
imp::test()
}