From: Alexander Borisov Date: Tue, 16 Jul 2019 14:32:10 +0000 (+0300) Subject: Fixed String.prototype.replace() for byte strings with regex arg. X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=c2f71041e18f38ac147fd5c70d48e22751b13f37;p=njs.git Fixed String.prototype.replace() for byte strings with regex arg. --- diff --git a/njs/njs_string.c b/njs/njs_string.c index df0502da..c6190d0b 100644 --- a/njs/njs_string.c +++ b/njs/njs_string.c @@ -3160,7 +3160,8 @@ njs_string_replace_regexp(njs_vm_t *vm, njs_value_t *args, start = r->part[0].start; if (start < end) { - p = (u_char *) nxt_utf8_next(start, end); + p = (r->utf8 != NJS_STRING_BYTE) + ? (u_char *) nxt_utf8_next(start, end) : start + 1; r->part[1].start = start; r->part[1].size = p - start; diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index 27fe9e21..c0ec3804 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -5681,6 +5681,9 @@ static njs_unit_test_t njs_test[] = { nxt_string("typeof '0'.replace(/^/g, '$0')"), nxt_string("string") }, + { nxt_string("typeof String.bytesFrom(Array(15).fill(0xE3)).replace(/^/g, 1)"), + nxt_string("string") }, + { nxt_string("/]/"), nxt_string("/\\]/") },