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:
parent
5c05e978ea
commit
246bd25c47
|
@ -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])
|
||||
|
|
|
@ -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"},
|
||||
|
|
Loading…
Reference in New Issue