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
 		{