diff --git a/modules/charset/escape.go b/modules/charset/escape.go index abe813b465..d2e8fb0d87 100644 --- a/modules/charset/escape.go +++ b/modules/charset/escape.go @@ -74,6 +74,7 @@ readingloop: for err == nil { n, err = text.Read(buf[readStart:]) bs := buf[:n+readStart] + n = len(bs) i := 0 for i < len(bs) { diff --git a/modules/charset/escape_test.go b/modules/charset/escape_test.go index dec92b4992..1804381413 100644 --- a/modules/charset/escape_test.go +++ b/modules/charset/escape_test.go @@ -200,3 +200,12 @@ func TestEscapeControlReader(t *testing.T) { }) } } + +func TestEscapeControlReader_panic(t *testing.T) { + bs := make([]byte, 0, 20479) + bs = append(bs, 'A') + for i := 0; i < 6826; i++ { + bs = append(bs, []byte("—")...) + } + _, _ = EscapeControlBytes(bs) +}