about summary refs log tree commit diff
path: root/src/libstd/sys/windows
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-08-25 16:22:17 +0000
committerbors <bors@rust-lang.org>2015-08-25 16:22:17 +0000
commitb339f38fa23845ce83c839380cd7cc34c5841f74 (patch)
tree8f2f48b31091d86cc690f1e09580e680a9cf8e31 /src/libstd/sys/windows
parent1806174ab430583fe09df508ddf426bea9f4a3e1 (diff)
parentc4c533a2935f1e39ef94920d9f1430ba75c69376 (diff)
downloadrust-b339f38fa23845ce83c839380cd7cc34c5841f74.tar.gz
rust-b339f38fa23845ce83c839380cd7cc34c5841f74.zip
Auto merge of #27995 - nagisa:windows-error-message, r=alexcrichton
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.

_**Completely untested**_… since I have no Windows machine or anything of a sort to test this on.

r? @aturon 
Diffstat (limited to 'src/libstd/sys/windows')
-rw-r--r--src/libstd/sys/windows/os.rs5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/libstd/sys/windows/os.rs b/src/libstd/sys/windows/os.rs
index 3e640ceaddd..1680ea88d0b 100644
--- a/src/libstd/sys/windows/os.rs
+++ b/src/libstd/sys/windows/os.rs
@@ -74,7 +74,7 @@ pub fn error_string(errnum: i32) -> String {
                                  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();
@@ -82,8 +82,7 @@ pub fn error_string(errnum: i32) -> String {
                            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();