diff --git a/vlib/flag/flag.v b/vlib/flag/flag.v index c3b6cecaba..85bb09de7f 100644 --- a/vlib/flag/flag.v +++ b/vlib/flag/flag.v @@ -212,7 +212,7 @@ fn (mut fs FlagParser) parse_value(longhand string, shorthand byte) []string { should_skip_one = false continue } - if arg[0] != `-` { + if arg.len == 0 || arg[0] != `-` { continue } if (arg.len == 2 && arg[0] == `-` && arg[1] == shorthand) || arg == full { diff --git a/vlib/flag/flag_test.v b/vlib/flag/flag_test.v index a4f63b74a5..83261932b2 100644 --- a/vlib/flag/flag_test.v +++ b/vlib/flag/flag_test.v @@ -405,3 +405,8 @@ fn test_dashdash_acts_as_parser_full_stop_dashdash_at_end() ? { args := fp.finalize() ? assert args.len > 0 } + +fn test_empty_string_with_flag() { + mut fp := flag.new_flag_parser(['']) + s := fp.string('something', `s`, 'default', 'Hey parse me') +}