Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 35b994e1 authored by Cole Faust's avatar Cole Faust
Browse files

Fix crash in MakeString.EndsWith()

Bug: 226974242
Test: go test
Change-Id: I21ff26d00ed7be145ae2c1175f1438b6e7d60834
parent a59059f3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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) {
+30 −0
Original line number Diff line number Diff line
@@ -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))