From 1dc0caef49e7b66ee2be84e504364dd6785869f4 Mon Sep 17 00:00:00 2001 From: Valentin Bartenev Date: Sun, 28 Jul 2019 13:17:13 +0300 Subject: [PATCH] Updated the list of space separators in String.prototype.trim(). According to the specification it must include all Unicode code points listed in the "Space_Separator" (Zs) category. --- njs/njs_string.c | 30 ++++++++++++++++++++++++++++++ njs/test/njs_unit_test.c | 10 ++++++++++ 2 files changed, 40 insertions(+) diff --git a/njs/njs_string.c b/njs/njs_string.c index 19046f36..3018ba1d 100644 --- a/njs/njs_string.c +++ b/njs/njs_string.c @@ -2425,8 +2425,23 @@ njs_string_prototype_trim(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, case 0x000D: /* */ case 0x0020: /* */ case 0x00A0: /* */ + case 0x1680: + case 0x2000: + case 0x2001: + case 0x2002: + case 0x2003: + case 0x2004: + case 0x2005: + case 0x2006: + case 0x2007: + case 0x2008: + case 0x2009: + case 0x200A: case 0x2028: /* */ case 0x2029: /* */ + case 0x202F: + case 0x205F: + case 0x3000: case 0xFEFF: /* */ trim++; continue; @@ -2448,8 +2463,23 @@ njs_string_prototype_trim(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, case 0x000D: /* */ case 0x0020: /* */ case 0x00A0: /* */ + case 0x1680: + case 0x2000: + case 0x2001: + case 0x2002: + case 0x2003: + case 0x2004: + case 0x2005: + case 0x2006: + case 0x2007: + case 0x2008: + case 0x2009: + case 0x200A: case 0x2028: /* */ case 0x2029: /* */ + case 0x202F: + case 0x205F: + case 0x3000: case 0xFEFF: /* */ trim++; continue; diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index 42123720..0c3f0ade 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -5653,6 +5653,16 @@ static njs_unit_test_t njs_test[] = { nxt_string("'\\u2029abc\\uFEFF\\u2028'.trim()"), nxt_string("abc") }, +#if (!NXT_HAVE_MEMORY_SANITIZER) /* very long test under MSAN */ + { nxt_string("var a = [], code;" + "for (code = 0; code <= 1114111; code++) {" + " var ws = String.fromCodePoint(code);" + " if ((ws + '-' + ws).trim() === '-')" + " a.push(code);" + "} a"), + nxt_string("9,10,11,12,13,32,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8232,8233,8239,8287,12288,65279") }, +#endif + { nxt_string("'abcdefgh'.search()"), nxt_string("0") }, -- 2.47.3