summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-bin-mruby
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-11-25 21:56:27 +0900
committerKOBAYASHI Shuji <[email protected]>2019-11-25 21:56:27 +0900
commitf9bd414350be17f2a5bb88f346902096615227cd (patch)
tree9f928a105328c57a6ff1d4d72c493c64fca5c55f /mrbgems/mruby-bin-mruby
parenta89d15cddef567297d347e6d857ac849a56edc20 (diff)
downloadmruby-f9bd414350be17f2a5bb88f346902096615227cd.tar.gz
mruby-f9bd414350be17f2a5bb88f346902096615227cd.zip
Fix `ARGV` value in `mruby` command (regression by #4827)
#### Before this patch: ``` $ bin/mruby -e 'p ARGV' a b ["bin/mruby", "-e", "p ARGV", "a", "b"] ``` #### After this patch: ``` $ bin/mruby -e 'p ARGV' a b ["a", "b"] ```
Diffstat (limited to 'mrbgems/mruby-bin-mruby')
-rw-r--r--mrbgems/mruby-bin-mruby/bintest/mruby.rb5
-rw-r--r--mrbgems/mruby-bin-mruby/tools/mruby/mruby.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/mrbgems/mruby-bin-mruby/bintest/mruby.rb b/mrbgems/mruby-bin-mruby/bintest/mruby.rb
index 8da51bac9..df0e991f7 100644
--- a/mrbgems/mruby-bin-mruby/bintest/mruby.rb
+++ b/mrbgems/mruby-bin-mruby/bintest/mruby.rb
@@ -39,6 +39,11 @@ assert '$0 value' do
assert_equal '"-e"', `#{cmd('mruby')} -e #{shellquote('p $0')}`.chomp
end
+assert 'ARGV value' do
+ assert_mruby(%{["ab", "cde"]\n}, "", true, %w[-e p(ARGV) ab cde])
+ assert_mruby("[]\n", "", true, %w[-e p(ARGV)])
+end
+
assert('float literal') do
script, bin = Tempfile.new('test.rb'), Tempfile.new('test.mrb')
File.write script.path, 'p [3.21, 2e308.infinite?, -2e308.infinite?]'
diff --git a/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c b/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c
index 41354d3f2..38ebccddc 100644
--- a/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c
+++ b/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c
@@ -189,8 +189,8 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
}
}
+ argc = opts->argc; argv = opts->argv;
if (args->cmdline == NULL) {
- argc = opts->argc; argv = opts->argv;
if (*argv == NULL) args->rfp = stdin;
else {
args->rfp = strcmp(argv[0], "-") == 0 ?