internal/language: fix resizeRange index wrong way
Fixes golang/go#42536
Change-Id: I572cdbb26d320c4d9a972d555ddc6427ce1f0348
Reviewed-on: https://go-review.googlesource.com/c/text/+/270697
Run-TryBot: Meng Zhuo <mzh@golangcn.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
Trust: Meng Zhuo <mzh@golangcn.org>
diff --git a/internal/language/parse.go b/internal/language/parse.go
index 2be83e1..a2fdad8 100644
--- a/internal/language/parse.go
+++ b/internal/language/parse.go
@@ -133,14 +133,15 @@
s.start = oldStart
if end := oldStart + newSize; end != oldEnd {
diff := end - oldEnd
- if end < cap(s.b) {
- b := make([]byte, len(s.b)+diff)
+ var b []byte
+ if n := len(s.b) + diff; n > cap(s.b) {
+ b = make([]byte, n)
copy(b, s.b[:oldStart])
- copy(b[end:], s.b[oldEnd:])
- s.b = b
} else {
- s.b = append(s.b[end:], s.b[oldEnd:]...)
+ b = s.b[:n:n]
}
+ copy(b[end:], s.b[oldEnd:])
+ s.b = b
s.next = end + (s.next - s.end)
s.end = end
}
diff --git a/language/parse_test.go b/language/parse_test.go
index 2ff28bf..041660c 100644
--- a/language/parse_test.go
+++ b/language/parse_test.go
@@ -318,6 +318,7 @@
{nil, "aa;q", false},
{nil, "aa;q=", false},
{nil, "aa;q=.", false},
+ {nil, "00-t-0o", false},
// odd fallbacks
{