From 54f76cc8cb1701e98d4ac7c0b6b4910590b64ccf Mon Sep 17 00:00:00 2001 From: Hikmatulloh Hari Mukti Date: Sun, 16 Jun 2024 13:01:00 +0700 Subject: [PATCH] fix: parse dtd end tag should not be strict --- tokenizer.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tokenizer.go b/tokenizer.go index e44269c..8c66582 100644 --- a/tokenizer.go +++ b/tokenizer.go @@ -175,7 +175,9 @@ func (t *Tokenizer) RawToken() (b []byte, err error) { if i >= t.last { prevLast := t.last off, i = t.memmoveRemainingBytes(off) - dtdOff = dtdOff - (prevLast - t.last) + if dtdOff != 0 { + dtdOff = dtdOff - (prevLast - t.last) + } if err = t.manageBuffer(); err != nil { t.err = err break @@ -193,7 +195,7 @@ func (t *Tokenizer) RawToken() (b []byte, err error) { case ']': dtdOff = i case '>': - if dtdOff == i-1 && t.buf[dtdOff] == ']' { + if t.buf[dtdOff] == ']' { buf := trim(t.buf[off : i+1 : cap(t.buf)]) t.cur = i + 1 return buf, err