Add checks to prevent errors in rendering html

pull/6622/head
Ido Nov 2021-09-30 15:35:23 +03:00
parent 0a9bff5897
commit 154681c2a6
1 changed files with 13 additions and 14 deletions

View File

@ -7,7 +7,6 @@ package markup
import (
"bytes"
"fmt"
"io"
"strings"
"github.com/unknwon/com"
@ -289,27 +288,27 @@ OUTER_LOOP:
}
case html.EndTagToken:
if len(startTags) == 0 {
buf.WriteString(token.String())
break
if com.IsSliceContainsStr(startTags, token.Data){
for startTags[len(startTags)-1] != token.Data && len(startTags) > 1 {
buf.WriteString(ClosingTag(startTags[len(startTags)-1]))
startTags = startTags[:len(startTags)-1]
}
buf.WriteString(ClosingTag(startTags[len(startTags)-1]))
startTags = startTags[:len(startTags)-1]
}
buf.Write(leftAngleBracket)
buf.WriteString(startTags[len(startTags)-1])
buf.Write(rightAngleBracket)
startTags = startTags[:len(startTags)-1]
default:
buf.WriteString(token.String())
}
}
if io.EOF == tokenizer.Err() {
return buf.Bytes()
for i := len(startTags)-1; i >= 0; i-- {
buf.WriteString(ClosingTag(startTags[i]))
}
// If we are not at the end of the input, then some other parsing error has occurred,
// so return the input verbatim.
return rawHTML
return buf.Bytes()
}
func ClosingTag(s string) string{
return string(leftAngleBracket) + s + string(rightAngleBracket)
}
type Type string