According to https://msdn.microsoft.com/en-us/library/windows/desktop/ms679351(v=vs.85).aspx:
> If the function succeeds, the return value is the number of TCHARs stored in the output buffer,
> excluding the terminating null character.
langId,
buf.as_mut_ptr(),
buf.len() as DWORD,
- ptr::null());
+ ptr::null()) as usize;
if res == 0 {
// Sometimes FormatMessageW can fail e.g. system doesn't like langId,
let fm_err = errno();
errnum, fm_err);
}
- let b = buf.iter().position(|&b| b == 0).unwrap_or(buf.len());
- match String::from_utf16(&buf[..b]) {
+ match String::from_utf16(&buf[..res]) {
Ok(mut msg) => {
// Trim trailing CRLF inserted by FormatMessageW
let len = msg.trim_right().len();