mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-01-17 23:06:30 -05:00
bug fix
This commit is contained in:
parent
b469dea315
commit
49202930ff
@ -7,14 +7,16 @@ import (
|
||||
type State byte
|
||||
|
||||
const (
|
||||
StateContent State = 0
|
||||
StateEscape State = 1
|
||||
StateDoubleQuote State = 2
|
||||
StateSingleQuote State = 3
|
||||
StateComment State = 4
|
||||
StateSlash State = 5
|
||||
StateMultilineComment State = 6
|
||||
StateMultilineCommentStar State = 7
|
||||
StateContent State = iota
|
||||
StateEscape
|
||||
StateDoubleQuote
|
||||
StateDoubleQuoteEscape
|
||||
StateSingleQuote
|
||||
StateSingleQuoteEscape
|
||||
StateComment
|
||||
StateSlash
|
||||
StateMultilineComment
|
||||
StateMultilineCommentStar
|
||||
)
|
||||
|
||||
type Reader struct {
|
||||
@ -51,15 +53,31 @@ func (v *Reader) Read(b []byte) (int, error) {
|
||||
p = append(p, x)
|
||||
v.state = StateContent
|
||||
case StateDoubleQuote:
|
||||
if x == '"' {
|
||||
switch x {
|
||||
case '"':
|
||||
v.state = StateContent
|
||||
}
|
||||
p = append(p, x)
|
||||
case '\\':
|
||||
v.state = StateDoubleQuoteEscape
|
||||
default:
|
||||
p = append(p, x)
|
||||
}
|
||||
case StateDoubleQuoteEscape:
|
||||
p = append(p, '\\', x)
|
||||
v.state = StateDoubleQuote
|
||||
case StateSingleQuote:
|
||||
if x == '\'' {
|
||||
switch x {
|
||||
case '\'':
|
||||
v.state = StateContent
|
||||
}
|
||||
p = append(p, x)
|
||||
case '\\':
|
||||
v.state = StateSingleQuoteEscape
|
||||
default:
|
||||
p = append(p, x)
|
||||
}
|
||||
case StateSingleQuoteEscape:
|
||||
p = append(p, '\\', x)
|
||||
v.state = StateSingleQuote
|
||||
case StateComment:
|
||||
if x == '\n' {
|
||||
v.state = StateContent
|
||||
|
@ -32,6 +32,7 @@ text 2*/`, `
|
||||
text text 2*`},
|
||||
{`"//"content`, `"//"content`},
|
||||
{`abcd'//'abcd`, `abcd'//'abcd`},
|
||||
{`"\""`, `"\""`},
|
||||
}
|
||||
|
||||
for _, testCase := range data {
|
||||
|
Loading…
Reference in New Issue
Block a user