gojay

high performance JSON encoder/decoder with stream API for Golang
git clone git://git.lair.cx/gojay
Log | Files | Refs | README | LICENSE

commit 6a58a698ecd2204199ab86db9d1dfd9a7031dc77
parent bd731ef75d7fbb57cad637370b64f167aa5ead0c
Author: francoispqt <francois@parquet.ninja>
Date:   Sun, 12 Aug 2018 01:34:06 +0800

add tests for solidus escaping sequence

Diffstat:
Mdecode_string.go | 3---
Mdecode_string_test.go | 18++++++++++++++++++
2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/decode_string.go b/decode_string.go @@ -55,7 +55,6 @@ func (dec *Decoder) parseEscapedString() error { if dec.cursor >= dec.length && !dec.read() { return dec.raiseInvalidJSONErr(dec.cursor) } - switch dec.data[dec.cursor] { case '"': dec.data[dec.cursor] = '"' @@ -80,7 +79,6 @@ func (dec *Decoder) parseEscapedString() error { if err != nil { return err } - diff := dec.cursor - start dec.data = append(append(dec.data[:start-1], str...), dec.data[dec.cursor:]...) dec.length = len(dec.data) @@ -90,7 +88,6 @@ func (dec *Decoder) parseEscapedString() error { default: return dec.raiseInvalidJSONErr(dec.cursor) } - // Truncate the previous backslash character, and the dec.data = append(dec.data[:dec.cursor-1], dec.data[dec.cursor:]...) dec.length-- diff --git a/decode_string_test.go b/decode_string_test.go @@ -102,6 +102,24 @@ func TestDecoderString(t *testing.T) { err: true, }, { + name: "escape-control-char-solidus", + json: `"\/"`, + expectedResult: "/", + err: false, + }, + { + name: "escape-control-char-solidus", + json: `"/"`, + expectedResult: "/", + err: false, + }, + { + name: "escape-control-char-solidus-escape-char", + json: `"\\/"`, + expectedResult: `\/`, + err: false, + }, + { name: "escape-control-char", json: `"\\r"`, expectedResult: `\r`,