mirror of https://github.com/gogs/gogs.git
Add checks to prevent errors in rendering html
parent
0a9bff5897
commit
154681c2a6
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue