summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorErick Tryzelaar <erick.tryzelaar@gmail.com>2013-08-09 11:13:26 -0700
committerErick Tryzelaar <erick.tryzelaar@gmail.com>2013-08-09 11:13:26 -0700
commitc14e14e63aeefa5c94648dd921bd99a9dadeb060 (patch)
treeb18a448b0e9fca7f8fc655a8d8792ad6aaa23e7e /src/libstd
parent56730c094cf95be58fb05b0e423673aca2a98b88 (diff)
downloadrust-c14e14e63aeefa5c94648dd921bd99a9dadeb060.tar.gz
rust-c14e14e63aeefa5c94648dd921bd99a9dadeb060.zip
std: more windows fixes to os.rs and run.rs
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/os.rs8
-rw-r--r--src/libstd/run.rs5
2 files changed, 9 insertions, 4 deletions
diff --git a/src/libstd/os.rs b/src/libstd/os.rs
index 57415e89cfb..365ddeb4f64 100644
--- a/src/libstd/os.rs
+++ b/src/libstd/os.rs
@@ -640,7 +640,7 @@ pub fn make_dir(p: &Path, mode: c_int) -> bool {
             use os::win32::as_utf16_p;
             // FIXME: turn mode into something useful? #2623
             do as_utf16_p(p.to_str()) |buf| {
-                libc::CreateDirectoryW(buf, ptr::null() as LPCWSTR)
+                libc::CreateDirectoryW(buf, ptr::mut_null())
                     != (0 as libc::BOOL)
             }
         }
@@ -1080,8 +1080,8 @@ pub fn last_os_error() -> ~str {
 
         let mut buf = [0 as c_char, ..TMPBUF_SZ];
 
-        do buf.as_mut_buf |buf, len| {
-            unsafe {
+        unsafe {
+            do buf.as_mut_buf |buf, len| {
                 let res = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
                                          FORMAT_MESSAGE_IGNORE_INSERTS,
                                          ptr::mut_null(),
@@ -1093,7 +1093,9 @@ pub fn last_os_error() -> ~str {
                 if res == 0 {
                     fail!("[%?] FormatMessage failure", errno());
                 }
+            }
 
+            do buf.as_imm_buf |buf, _len| {
                 str::raw::from_c_str(buf)
             }
         }
diff --git a/src/libstd/run.rs b/src/libstd/run.rs
index 83e0846c351..23ee52389a0 100644
--- a/src/libstd/run.rs
+++ b/src/libstd/run.rs
@@ -25,7 +25,6 @@ use prelude::*;
 use ptr;
 use task;
 use vec::ImmutableVector;
-use vec;
 
 /**
  * A value representing a child process.
@@ -691,6 +690,8 @@ fn spawn_process_os(prog: &str, args: &[~str],
 
 #[cfg(unix)]
 fn with_argv<T>(prog: &str, args: &[~str], cb: &fn(**libc::c_char) -> T) -> T {
+    use vec;
+
     // We can't directly convert `str`s into `*char`s, as someone needs to hold
     // a reference to the intermediary byte buffers. So first build an array to
     // hold all the ~[u8] byte strings.
@@ -717,6 +718,8 @@ fn with_argv<T>(prog: &str, args: &[~str], cb: &fn(**libc::c_char) -> T) -> T {
 
 #[cfg(unix)]
 fn with_envp<T>(env: Option<&[(~str, ~str)]>, cb: &fn(*c_void) -> T) -> T {
+    use vec;
+
     // On posixy systems we can pass a char** for envp, which is a
     // null-terminated array of "k=v\n" strings. Like `with_argv`, we have to
     // have a temporary buffer to hold the intermediary `~[u8]` byte strings.