fix crash when COMP_POINT is greater than COMP_LINE size (#128)

Some shells (inexplicably) occasionally have a COMP_POINT that is greater than the COMP_LINE size. When that happens completion should be based on length of the COMP_LINE to avoid an out of bounds error.

See the original hack fix here: https://github.com/chriswalz/bit/blob/master/cmd/bitcomplete.go on line 39
This commit is contained in:
Chris Walz 2020-11-08 11:56:26 -05:00 committed by GitHub
parent 5c05e978ea
commit 246bd25c47
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 1 deletions

View File

@ -78,6 +78,9 @@ func Complete(name string, cmd Completer) {
if err != nil {
panic("COMP_POINT env should be integer, got: " + point)
}
if i > len(line) {
i = len(line)
}
// Parse the command line up to the completion point.
args := arg.Parse(line[:i])

View File

@ -173,7 +173,7 @@ func TestComplete(t *testing.T) {
{shouldExit: false, line: "", point: ""},
{shouldPanic: true, line: "cmd", point: ""},
{shouldPanic: true, line: "cmd", point: "a"},
{shouldPanic: true, line: "cmd", point: "4"},
{shouldExit: true, line: "cmd", point: "4"},
{shouldExit: true, install: "1"},
{shouldExit: false, install: "a"},