details: https://hg.nginx.org/njs/rev/dfe0eeff0568 branches: changeset: 1944:dfe0eeff0568 user: Dmitry Volyntsev <xei...@nginx.com> date: Wed Aug 31 18:35:58 2022 -0700 description: Fixed String.prototype.trimEnd() with unicode string.
Previously, when the method was invoked with a string consisting of space characters and at least one of them was a Unicode space separator (code point above 127) it returned invalid string value with non-zero size but zero length. The fix is to update the size of the resulting string appropriately. This closes #569 issue on Github. diffstat: src/njs_string.c | 1 + src/test/njs_unit_test.c | 8 ++++++++ 2 files changed, 9 insertions(+), 0 deletions(-) diffs (29 lines): diff -r 26b8f0c2ef94 -r dfe0eeff0568 src/njs_string.c --- a/src/njs_string.c Wed Aug 31 16:52:16 2022 -0700 +++ b/src/njs_string.c Wed Aug 31 18:35:58 2022 -0700 @@ -2849,6 +2849,7 @@ njs_string_trim(const njs_value_t *value for ( ;; ) { if (start == prev) { + end = prev; break; } diff -r 26b8f0c2ef94 -r dfe0eeff0568 src/test/njs_unit_test.c --- a/src/test/njs_unit_test.c Wed Aug 31 16:52:16 2022 -0700 +++ b/src/test/njs_unit_test.c Wed Aug 31 18:35:58 2022 -0700 @@ -8450,6 +8450,14 @@ static njs_unit_test_t njs_test[] = { njs_str("' абв '.trimStart().trimEnd()"), njs_str("абв") }, + { njs_str("[" + " String.fromCodePoint(0x2028)," + " String.fromCodePoint(0x20, 0x2028)," + " String.fromCodePoint(0x0009, 0x20, 0x2028)," + " String.fromCodePoint(0xFEFF)," + "].every(v => v.trimEnd() == '')"), + njs_str("true") }, + { njs_str("'\\u2029abc\\uFEFF\\u2028'.trim()"), njs_str("abc") }, _______________________________________________ nginx-devel mailing list -- nginx-devel@nginx.org To unsubscribe send an email to nginx-devel-le...@nginx.org