Merge "Fix crash in MakeString.EndsWith()"

This commit is contained in:
Treehugger Robot 2022-04-29 08:18:05 +00:00 committed by Gerrit Code Review
commit 2fe7af01af
2 changed files with 31 additions and 1 deletions

View file

@ -279,7 +279,7 @@ func (ms *MakeString) TrimRightOne() {
func (ms *MakeString) EndsWith(ch rune) bool {
s := ms.Strings[len(ms.Strings)-1]
return s[len(s)-1] == uint8(ch)
return len(s) > 0 && s[len(s)-1] == uint8(ch)
}
func (ms *MakeString) ReplaceLiteral(input string, output string) {

View file

@ -217,6 +217,36 @@ func TestMakeStringWords(t *testing.T) {
}
}
var endsWithTestCases = []struct {
in *MakeString
endsWith rune
expected bool
}{
{
in: genMakeString("foo", "X", "bar ="),
endsWith: '=',
expected: true,
},
{
in: genMakeString("foo", "X", "bar ="),
endsWith: ':',
expected: false,
},
{
in: genMakeString("foo", "X", ""),
endsWith: '=',
expected: false,
},
}
func TestMakeStringEndsWith(t *testing.T) {
for _, test := range endsWithTestCases {
if test.in.EndsWith(test.endsWith) != test.expected {
t.Errorf("with:\n%q\nexpected:\n%t\ngot:\n%t", test.in.Dump(), test.expected, !test.expected)
}
}
}
func dumpArray(a []*MakeString) string {
ret := make([]string, len(a))