about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libserialize/json.rs43
1 files changed, 35 insertions, 8 deletions
diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs
index aa628a71f4b..9aea6648349 100644
--- a/src/libserialize/json.rs
+++ b/src/libserialize/json.rs
@@ -331,14 +331,41 @@ pub fn escape_bytes(wr: &mut io::Writer, bytes: &[u8]) -> Result<(), io::IoError
 
     for (i, byte) in bytes.iter().enumerate() {
         let escaped = match *byte {
-            b'"' => "\\\"".into_cow(),
-            b'\\' => "\\\\".into_cow(),
-            b'\x08' => "\\b".into_cow(),
-            b'\x0c' => "\\f".into_cow(),
-            b'\n' => "\\n".into_cow(),
-            b'\r' => "\\r".into_cow(),
-            b'\t' => "\\t".into_cow(),
-            b'\x00'...b'\x1f' | b'\x7f' => format!("\\u00{:0>2x}", *byte).into_cow(),
+            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'\t' => "\\t",
+            b'\n' => "\\n",
+            b'\x0b' => "\\u000b",
+            b'\x0c' => "\\f",
+            b'\r' => "\\r",
+            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; }
         };