[njs] Fixed Unicode Escaping in JSON.stringify() according to spec.

Dmitry Volyntsev xeioex at nginx.com
Wed Feb 26 14:49:03 UTC 2020


details:   https://hg.nginx.org/njs/rev/6444ae6ab276
branches:  
changeset: 1339:6444ae6ab276
user:      Dmitry Volyntsev <xeioex at nginx.com>
date:      Wed Feb 26 17:48:46 2020 +0300
description:
Fixed Unicode Escaping in JSON.stringify() according to spec.

Lowecase hexadecimal number are required.

diffstat:

 src/njs_json.c           |  4 ++--
 src/test/njs_unit_test.c |  2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diffs (33 lines):

diff -r 061afad25256 -r 6444ae6ab276 src/njs_json.c
--- a/src/njs_json.c	Tue Feb 25 16:03:20 2020 +0300
+++ b/src/njs_json.c	Wed Feb 26 17:48:46 2020 +0300
@@ -1610,7 +1610,7 @@ njs_json_append_string(njs_chb_t *chain,
     njs_string_prop_t  string;
 
     static char  hex2char[16] = { '0', '1', '2', '3', '4', '5', '6', '7',
-                                  '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+                                  '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
 
     (void) njs_string_prop(&string, value);
 
@@ -1619,7 +1619,7 @@ njs_json_append_string(njs_chb_t *chain,
     utf8 = (string.length != 0 && string.length != string.size);
 
     size = njs_max(string.size + 2, 7);
-    dst = njs_chb_reserve(chain, string.size + 2);
+    dst = njs_chb_reserve(chain, size);
     if (njs_slow_path(dst == NULL)) {
         return;
     }
diff -r 061afad25256 -r 6444ae6ab276 src/test/njs_unit_test.c
--- a/src/test/njs_unit_test.c	Tue Feb 25 16:03:20 2020 +0300
+++ b/src/test/njs_unit_test.c	Wed Feb 26 17:48:46 2020 +0300
@@ -15612,7 +15612,7 @@ static njs_unit_test_t  njs_test[] =
       njs_str("\"\\n\\t\\r\\\"\\f\\b\"") },
 
     { njs_str("JSON.stringify('\x00\x01\x02\x1f')"),
-      njs_str("\"\\u0000\\u0001\\u0002\\u001F\"") },
+      njs_str("\"\\u0000\\u0001\\u0002\\u001f\"") },
 
     { njs_str("JSON.stringify('abc\x00')"),
       njs_str("\"abc\\u0000\"") },


More information about the nginx-devel mailing list