Don't crash on complete -C in non-interactive mode

Fixes #2361
This commit is contained in:
ridiculousfish 2015-09-10 18:08:42 -07:00
parent 31d1e04301
commit 025b45b91e
2 changed files with 12 additions and 2 deletions

View file

@ -25,7 +25,7 @@ enum
/** /**
Error message on missing argument Error message on missing argument
*/ */
#define BUILTIN_ERR_MISSING _( L"%ls: Expected argument\n" ) #define BUILTIN_ERR_MISSING _( L"%ls: Expected argument for option %ls\n" )
/** /**
Error message on invalid combination of options Error message on invalid combination of options

View file

@ -433,9 +433,19 @@ static int builtin_complete(parser_t &parser, wchar_t **argv)
break; break;
case 'C': case 'C':
{
do_complete = true; do_complete = true;
do_complete_param = w.woptarg ? w.woptarg : reader_get_buffer(); const wchar_t *arg = w.woptarg ? w.woptarg : reader_get_buffer();
if (arg == NULL)
{
// This corresponds to using 'complete -C' in non-interactive mode
// See #2361
builtin_missing_argument(parser, argv[0], argv[w.woptind-1]);
return STATUS_BUILTIN_ERROR;
}
do_complete_param = arg;
break; break;
}
case 'h': case 'h':
builtin_print_help(parser, argv[0], stdout_buffer); builtin_print_help(parser, argv[0], stdout_buffer);