diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-12-22 12:54:32 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-12-22 15:17:22 -0800 |
| commit | 8824c39945cf8cbdd0e1a07824e3d2f4823b8e7b (patch) | |
| tree | c6384fcca253dd02b4b3de7f01079184ec63ef86 | |
| parent | 0a07db438be8ce8ce969b1244e8796d65a964d31 (diff) | |
| parent | 0a7ef3f6cc7967feeb9c66a4f499ccbd515c67f6 (diff) | |
rollup merge of #20089: rolftimmermans/json-control-chars-escape
Conflicts: src/libserialize/json.rs
| -rw-r--r-- | AUTHORS.txt | 1 | ||||
| -rw-r--r-- | src/libserialize/json.rs | 37 |
2 files changed, 35 insertions, 3 deletions
diff --git a/AUTHORS.txt b/AUTHORS.txt index 83f9bbff8aa..9aa09ac1763 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -498,6 +498,7 @@ Robert Irelan <rirelan@gmail.com> Robert Knight <robertknight@gmail.com> Robert Millar <robert.millar@cantab.net> Roland Tanglao <roland@rolandtanglao.com> +Rolf Timmermans <r.w.timmermans@gmail.com> Ron Dahlgren <ronald.dahlgren@gmail.com> Roy Frostig <rfrostig@mozilla.com> Russell <rpjohnst@gmail.com> diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs index b945bced512..7df5590fb40 100644 --- a/src/libserialize/json.rs +++ b/src/libserialize/json.rs @@ -334,11 +334,39 @@ pub fn escape_bytes(wr: &mut io::Writer, bytes: &[u8]) -> Result<(), io::IoError let escaped = match *byte { b'"' => "\\\"", b'\\' => "\\\\", + b'\x00' => "\\u0000", + b'\x01' => "\\u0001", + b'\x02' => "\\u0002", + b'\x03' => "\\u0003", + b'\x04' => "\\u0004", + b'\x05' => "\\u0005", + b'\x06' => "\\u0006", + b'\x07' => "\\u0007", b'\x08' => "\\b", - b'\x0c' => "\\f", + b'\t' => "\\t", b'\n' => "\\n", + b'\x0b' => "\\u000b", + b'\x0c' => "\\f", b'\r' => "\\r", - b'\t' => "\\t", + b'\x0e' => "\\u000e", + b'\x0f' => "\\u000f", + b'\x10' => "\\u0010", + b'\x11' => "\\u0011", + b'\x12' => "\\u0012", + b'\x13' => "\\u0013", + b'\x14' => "\\u0014", + b'\x15' => "\\u0015", + b'\x16' => "\\u0016", + b'\x17' => "\\u0017", + b'\x18' => "\\u0018", + b'\x19' => "\\u0019", + b'\x1a' => "\\u001a", + b'\x1b' => "\\u001b", + b'\x1c' => "\\u001c", + b'\x1d' => "\\u001d", + b'\x1e' => "\\u001e", + b'\x1f' => "\\u001f", + b'\x7f' => "\\u007f", _ => { continue; } }; @@ -2731,7 +2759,10 @@ mod tests { fn test_write_char() { check_encoder_for_simple!('a', "\"a\""); check_encoder_for_simple!('\t', "\"\\t\""); - check_encoder_for_simple!('\u{a0}', "\"\u{a0}\""); + check_encoder_for_simple!('\u{0000}', "\"\\u0000\""); + check_encoder_for_simple!('\u{001b}', "\"\\u001b\""); + check_encoder_for_simple!('\u{007f}', "\"\\u007f\""); + check_encoder_for_simple!('\u{00a0}', "\"\u{00a0}\""); check_encoder_for_simple!('\u{abcd}', "\"\u{abcd}\""); check_encoder_for_simple!('\u{10ffff}', "\"\u{10ffff}\""); } |
