env: Fix crash when -S string is not empty but no operand follows.

split_spaces() set argc in main() incorrectly, which caused trouble for
getopt().

Examples:
  env -S '\c'
  env -S -i

PR:		197769
MFC after:	1 week
This commit is contained in:
Jilles Tjoelker 2015-03-08 14:12:43 +00:00
parent 8f3ad0f84e
commit 6ab1d4d9c3
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=279779
3 changed files with 36 additions and 2 deletions

View file

@ -382,3 +382,36 @@ gblenv=OUTSIDEVAR=OutsideValue
setenv:D=D_ThisisAlongstring_D1
stdout:A_ThisisAlongstring_A1 B_ThisisAlongstring_B1 C_ThisisAlongstring_C1 D_ThisisAlongstring_D1 ScriptName: [%-script.pathname-%]
[run]
[test]
sb_args:sh
script:[%-testpgm.pathname-%] -S '\c' >/dev/null
[run]
[test]
sb_args:sh
script:[%-testpgm.pathname-%] -S'\c' >/dev/null
[run]
[test]
sb_args:sh
script:[%-testpgm.pathname-%] -u foo -S '\c' >/dev/null
[run]
[test]
sb_args:sh
script:[%-testpgm.pathname-%] -u foo -S'\c' >/dev/null
[run]
[test]
sb_args:sh
script:[%-testpgm.pathname-%] -S '-u bar \c' >/dev/null
[run]
[test]
sb_args:sh
script:[%-testpgm.pathname-%] -S'-u bar \c' >/dev/null
[run]
[test]
sb_args:sh
script:[%-testpgm.pathname-%] -u foo -S '-u bar \c' >/dev/null
[run]
[test]
sb_args:sh
script:[%-testpgm.pathname-%] -u foo -S'-u bar \c' >/dev/null
[run]

View file

@ -346,6 +346,7 @@ class RGTestOptions
# "just anything" that matches the general pattern. There are
# no blanks in the recognized values, but I use an x-tended
# regexp and then add blanks to make it more readable.
optval.gsub!(/\[%- testpgm\.pathname -%\]/x, $testpgm)
optval.gsub!(/\[%- testpgm\.basename -%\]/x, File.basename($testpgm))
optval.gsub!(/\[%- script\.pathname -%\]/x, $scriptfile)

View file

@ -372,9 +372,9 @@ split_spaces(const char *str, int *origind, int *origc, char ***origv)
*nextarg = NULL;
/* Update optind/argc/argv in the calling routine */
*origind = 1;
*origc += addcount;
*origc += addcount - *origind + 1;
*origv = newargv;
*origind = 1;
}
/**