fix setting of $argv for source w/no args

Fixes #139
This commit is contained in:
Kurtis Rader 2016-04-06 13:04:44 -07:00
parent 4ff8e6e781
commit 02f18cae0a
3 changed files with 12 additions and 2 deletions

View file

@ -3375,7 +3375,7 @@ static int builtin_source(parser_t &parser, io_streams_t &streams, wchar_t **arg
parser.push_block(new source_block_t(fn_intern)); parser.push_block(new source_block_t(fn_intern));
reader_push_current_filename(fn_intern); reader_push_current_filename(fn_intern);
env_set_argv((argc>2)?(argv+2):(argv+1)); env_set_argv(argc > 1 ? argv + 2 : argv + 1);
res = reader_read(fd, streams.io_chain ? *streams.io_chain : io_chain_t()); res = reader_read(fd, streams.io_chain ? *streams.io_chain : io_chain_t());

View file

@ -166,5 +166,11 @@ function always_fails
end end
end end
always_fails ; echo $status # Verify $argv set correctly in sourced scripts.
# Issue #139
echo 'echo "source argv {$argv}"' | source
echo 'echo "source argv {$argv}"' | source -
echo 'echo "source argv {$argv}"' | source - abc
echo 'echo "source argv {$argv}"' | source - abc def
always_fails ; echo $status

View file

@ -52,4 +52,8 @@ pipe 11
pipe 12 pipe 12
Checking for infinite loops in no-execute Checking for infinite loops in no-execute
before comment after comment before comment after comment
source argv {}
source argv {}
source argv {abc}
source argv {abc def}
1 1