diff options
| author | Jeremy Soller <jackpot51@gmail.com> | 2016-12-26 17:08:27 -0700 |
|---|---|---|
| committer | Jeremy Soller <jackpot51@gmail.com> | 2016-12-27 10:55:41 -0700 |
| commit | 88df0e391842f89dbd95fb8e375e11d8263ae156 (patch) | |
| tree | 445e6abf8f088a1168acfc9da8a36e4ec1f37ea1 /src/libstd/sys | |
| parent | 86896ba0be624a9c09a07cc816bd972e032e4bc8 (diff) | |
| download | rust-88df0e391842f89dbd95fb8e375e11d8263ae156.tar.gz rust-88df0e391842f89dbd95fb8e375e11d8263ae156.zip | |
Fix arguments on Redox
Diffstat (limited to 'src/libstd/sys')
| -rw-r--r-- | src/libstd/sys/redox/args.rs | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/libstd/sys/redox/args.rs b/src/libstd/sys/redox/args.rs index f6fea2f1076..212895d7b76 100644 --- a/src/libstd/sys/redox/args.rs +++ b/src/libstd/sys/redox/args.rs @@ -52,10 +52,9 @@ impl DoubleEndedIterator for Args { mod imp { use os::unix::prelude::*; use mem; - use ffi::OsString; + use ffi::{CStr, OsString}; use marker::PhantomData; - use slice; - use str; + use libc; use super::Args; use sys_common::mutex::Mutex; @@ -64,12 +63,9 @@ mod imp { static LOCK: Mutex = Mutex::new(); pub unsafe fn init(argc: isize, argv: *const *const u8) { - let mut args: Vec<Vec<u8>> = Vec::new(); - for i in 0..argc { - let len = *(argv.offset(i * 2)) as usize; - let ptr = *(argv.offset(i * 2 + 1)); - args.push(slice::from_raw_parts(ptr, len).to_vec()); - } + let args = (0..argc).map(|i| { + CStr::from_ptr(*argv.offset(i) as *const libc::c_char).to_bytes().to_vec() + }).collect(); LOCK.lock(); let ptr = get_global_ptr(); |
