Fix a crash when trying to complete an ambiguous subcommand. Take set s tar for example: here s is ambiguous between set and show. Pressing TAB after this input currently crashes LLDB because we go look for the subcommand and fail to find one, but still add the original command (s) as a completion. This causes problems later on when we're trying to insert the completion and find that the "completed string" is shorter than the input string and call std::string::substr to eliminate the common prefix.
frame #12: 0x0000000133fafb44 liblldb.17.0.0git.dylib`lldb_private::Editline::TabCommand(this=0x000000010a645aa0, ch=9) at Editline.cpp:1044:24 1041 std::string longest_prefix = completions.LongestCommonPrefix(); 1042 if (!longest_prefix.empty()) 1043 longest_prefix = -> 1044 longest_prefix.substr(request.GetCursorArgumentPrefix().size()); (lldb) v longest_prefix (std::string) longest_prefix = "s" (lldb) p request.GetCursorArgumentPrefix().size() (size_t) 3
rdar://111848598