From aa41d4cdd90259ea3eb0216d3ff5dc2853d304b4 Mon Sep 17 00:00:00 2001 From: Alexander Borisov Date: Tue, 16 Jul 2019 17:32:12 +0300 Subject: [PATCH] Fixed String.prototype.substring() with empty substring. --- njs/njs_string.c | 4 ++-- njs/test/njs_unit_test.c | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/njs/njs_string.c b/njs/njs_string.c index e4ddd128..f2b65740 100644 --- a/njs/njs_string.c +++ b/njs/njs_string.c @@ -1357,10 +1357,10 @@ njs_string_slice_string_prop(njs_string_prop_t *dst, p = start; n = length; - do { + while (n != 0 && p < end) { p = nxt_utf8_next(p, end); n--; - } while (n != 0 && p < end); + } size = p - start; length -= n; diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index 860ab5a9..94be56d7 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -4822,6 +4822,9 @@ static njs_unit_test_t njs_test[] = { nxt_string("'abcdefgh'.substring(100, 120)"), nxt_string("") }, + { nxt_string("'α'.repeat(32).substring(32)"), + nxt_string("") }, + { nxt_string("'abcdefghijklmno'.slice(NaN, 5)"), nxt_string("abcde") }, -- 2.47.3