Skip to content

Commit e6086d7

Browse files
committed
Fix escaping of 0x0b
1 parent 692f321 commit e6086d7

File tree

2 files changed

+132
-6
lines changed

2 files changed

+132
-6
lines changed

src/serialize/writer/str/escape.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ pub const QUOTE_TAB: [[u8; 8]; 96] = [
4343
[b'\\', b'u', b'0', b'0', b'0', b'5', 0, 6],
4444
[b'\\', b'u', b'0', b'0', b'0', b'6', 0, 6],
4545
[b'\\', b'u', b'0', b'0', b'0', b'7', 0, 6],
46-
[b'\\', b'b', 0, 0, 0, 0, 0, 2],
47-
[b'\\', b't', 0, 0, 0, 0, 0, 2],
48-
[b'\\', b'n', 0, 0, 0, 0, 0, 2],
49-
[b'\\', b'u', 0, 0, 0, b'b', 0, 2],
50-
[b'\\', b'f', 0, 0, 0, 0, 0, 2],
51-
[b'\\', b'r', 0, 0, 0, 0, 0, 2],
46+
[b'\\', b'b', b'0', b'0', b'0', b'0', 0, 2],
47+
[b'\\', b't', b'0', b'0', b'0', b'0', 0, 2],
48+
[b'\\', b'n', b'0', b'0', b'0', b'0', 0, 2],
49+
[b'\\', b'u', b'0', b'0', b'0', b'b', 0, 6],
50+
[b'\\', b'f', b'0', b'0', b'0', b'0', 0, 2],
51+
[b'\\', b'r', b'0', b'0', b'0', b'0', 0, 2],
5252
[b'\\', b'u', b'0', b'0', b'0', b'e', 0, 6],
5353
[b'\\', b'u', b'0', b'0', b'0', b'f', 0, 6],
5454
[b'\\', b'u', b'0', b'0', b'1', b'0', 0, 6],

test/test_escape.py

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
2+
3+
import orjson
4+
5+
6+
def test_issue565():
7+
assert (
8+
orjson.dumps("\n\r\u000b\f\u001c\u001d\u001e")
9+
== b'"\\n\\r\\u000b\\f\\u001c\\u001d\\u001e"'
10+
)
11+
12+
13+
def test_0x00():
14+
assert orjson.dumps("\u0000") == b'"\\u0000"'
15+
16+
17+
def test_0x01():
18+
assert orjson.dumps("\u0001") == b'"\\u0001"'
19+
20+
21+
def test_0x02():
22+
assert orjson.dumps("\u0002") == b'"\\u0002"'
23+
24+
25+
def test_0x03():
26+
assert orjson.dumps("\u0003") == b'"\\u0003"'
27+
28+
29+
def test_0x04():
30+
assert orjson.dumps("\u0004") == b'"\\u0004"'
31+
32+
33+
def test_0x05():
34+
assert orjson.dumps("\u0005") == b'"\\u0005"'
35+
36+
37+
def test_0x06():
38+
assert orjson.dumps("\u0006") == b'"\\u0006"'
39+
40+
41+
def test_0x07():
42+
assert orjson.dumps("\u0007") == b'"\\u0007"'
43+
44+
45+
def test_0x08():
46+
assert orjson.dumps("\u0008") == b'"\\b"'
47+
48+
49+
def test_0x09():
50+
assert orjson.dumps("\u0009") == b'"\\t"'
51+
52+
53+
def test_0x0a():
54+
assert orjson.dumps("\u000a") == b'"\\n"'
55+
56+
57+
def test_0x0b():
58+
assert orjson.dumps("\u000b") == b'"\\u000b"'
59+
60+
61+
def test_0x0c():
62+
assert orjson.dumps("\u000c") == b'"\\f"'
63+
64+
65+
def test_0x0d():
66+
assert orjson.dumps("\u000d") == b'"\\r"'
67+
68+
69+
def test_0x0e():
70+
assert orjson.dumps("\u000e") == b'"\\u000e"'
71+
72+
73+
def test_0x0f():
74+
assert orjson.dumps("\u000f") == b'"\\u000f"'
75+
76+
77+
def test_0x10():
78+
assert orjson.dumps("\u0010") == b'"\\u0010"'
79+
80+
81+
def test_0x11():
82+
assert orjson.dumps("\u0011") == b'"\\u0011"'
83+
84+
85+
def test_0x12():
86+
assert orjson.dumps("\u0012") == b'"\\u0012"'
87+
88+
89+
def test_0x13():
90+
assert orjson.dumps("\u0013") == b'"\\u0013"'
91+
92+
93+
def test_0x14():
94+
assert orjson.dumps("\u0014") == b'"\\u0014"'
95+
96+
97+
def test_0x15():
98+
assert orjson.dumps("\u0015") == b'"\\u0015"'
99+
100+
101+
def test_0x16():
102+
assert orjson.dumps("\u0016") == b'"\\u0016"'
103+
104+
105+
def test_0x17():
106+
assert orjson.dumps("\u0017") == b'"\\u0017"'
107+
108+
109+
def test_0x18():
110+
assert orjson.dumps("\u0018") == b'"\\u0018"'
111+
112+
113+
def test_0x19():
114+
assert orjson.dumps("\u0019") == b'"\\u0019"'
115+
116+
117+
def test_0x1a():
118+
assert orjson.dumps("\u001a") == b'"\\u001a"'
119+
120+
121+
def test_backslash():
122+
assert orjson.dumps("\\") == b'"\\\\"'
123+
124+
125+
def test_quote():
126+
assert orjson.dumps('"') == b'"\\""'

0 commit comments

Comments
 (0)