Skip to content

Commit b8a03aa

Browse files
committed
Fix handling of \b, \f, \n, \r, \t
1 parent 500b696 commit b8a03aa

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

types/json_size.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ func ExpectedJSONSizeString(s string) int {
1010
for _, r := range s {
1111
if r == '"' || r == '\\' {
1212
out += 1
13+
} else if r == '\b' || r == '\f' || r == '\n' || r == '\r' || r == '\t' {
14+
// https://cs.opensource.google/go/go/+/master:src/encoding/json/encode.go;l=992-1001;drc=0909bcd9e4acb01089d588d608d669d69710e50a
15+
out += 1
1316
} else if r <= 0x1F {
1417
// control codes \u0000 - \u001f
1518
out += 5

types/json_size_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,21 @@ func TestExpectedJSONSizeString(t *testing.T) {
4444
"control character DEL": {
4545
input: "\x7F",
4646
},
47+
"control character LF": {
48+
input: "\n",
49+
},
50+
"control character CR": {
51+
input: "\r",
52+
},
53+
"control character BS": {
54+
input: "\b",
55+
},
56+
"control character HT": {
57+
input: "\t",
58+
},
59+
"control character FF": {
60+
input: "\f",
61+
},
4762
"emoji": {
4863
input: "😮😗🧝🏾‍♀️",
4964
},

0 commit comments

Comments
 (0)