about summary refs log tree commit diff
path: root/src/libstd/sys/wasi
diff options
context:
space:
mode:
authornewpavlov <newpavlov@gmail.com>2019-08-21 04:16:05 +0300
committernewpavlov <newpavlov@gmail.com>2019-08-21 04:16:05 +0300
commit88fd9450aa2111fcbe981006a9c391d57775ec14 (patch)
tree7b2fb2bdb5f1d3f0f5edac44803bde1d90cef256 /src/libstd/sys/wasi
parent4dee102a67466ca0c95f540aa458f8779f3a1cb5 (diff)
downloadrust-88fd9450aa2111fcbe981006a9c391d57775ec14.tar.gz
rust-88fd9450aa2111fcbe981006a9c391d57775ec14.zip
update args
Diffstat (limited to 'src/libstd/sys/wasi')
-rw-r--r--src/libstd/sys/wasi/args.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libstd/sys/wasi/args.rs b/src/libstd/sys/wasi/args.rs
index 2d0ddea385a..de9ca62469d 100644
--- a/src/libstd/sys/wasi/args.rs
+++ b/src/libstd/sys/wasi/args.rs
@@ -18,8 +18,14 @@ pub struct Args {
 
 /// Returns the command line arguments
 pub fn args() -> Args {
-    let mut buf = Vec::new();
-    let _ = wasi::get_args(|arg| buf.push(OsString::from_vec(arg.to_vec())));
+    let buf = wasi::args_sizes_get().and_then(|args_sizes| {
+        let mut buf = Vec::with_capacity(args_sizes.get_count());
+        wasi::get_args(args_sizes, |arg| {
+            let arg = OsString::from_vec(arg.to_vec());
+            buf.push(arg);
+        })?;
+        Ok(buf)
+    }).unwrap_or(vec![]);
     Args {
         iter: buf.into_iter(),
         _dont_send_or_sync_me: PhantomData