diff --git a/tools/conf/json/reader.go b/tools/conf/json/reader.go index 361091981..53a14dde4 100644 --- a/tools/conf/json/reader.go +++ b/tools/conf/json/reader.go @@ -4,6 +4,7 @@ import ( "io" ) +// State is the internal state of parser. type State byte const ( @@ -50,7 +51,7 @@ func (v *Reader) Read(b []byte) (int, error) { p = append(p, x) } case StateEscape: - p = append(p, x) + p = append(p, '\\', x) v.state = StateContent case StateDoubleQuote: switch x { diff --git a/tools/conf/json/reader_test.go b/tools/conf/json/reader_test.go index feede9b70..187e8ae26 100644 --- a/tools/conf/json/reader_test.go +++ b/tools/conf/json/reader_test.go @@ -4,6 +4,7 @@ import ( "testing" "bytes" + "v2ray.com/core/testing/assert" . "v2ray.com/core/tools/conf/json" ) @@ -33,6 +34,7 @@ text text 2*`}, {`"//"content`, `"//"content`}, {`abcd'//'abcd`, `abcd'//'abcd`}, {`"\""`, `"\""`}, + {`\"/*abcd*/\"`, `\"\"`}, } for _, testCase := range data {