From: Igor Sysoev Date: Fri, 14 Oct 2016 14:21:35 +0000 (+0300) Subject: A fix in Array.splice() function. X-Git-Tag: 0.1.4~15 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=a7d03d91439e68ce4bc7e92bf225abe768d53d40;p=njs.git A fix in Array.splice() function. --- diff --git a/njs/njs_array.c b/njs/njs_array.c index 4a10ded2..39bdfa61 100644 --- a/njs/njs_array.c +++ b/njs/njs_array.c @@ -585,6 +585,10 @@ njs_array_prototype_splice(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, if (nargs > 1) { start = args[1].data.u.number; + if (start > array->length) { + start = array->length; + } + if (nargs > 2) { delete = args[2].data.u.number; diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index 59663e4e..22f647f8 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -2304,6 +2304,10 @@ static njs_unit_test_t njs_test[] = { nxt_string("var a = []; a.splice()"), nxt_string("") }, + { nxt_string("var a = [];" + "a.splice(9,0,1,2).join(':') + '|' + a"), + nxt_string("|1,2") }, + { nxt_string("var a = [0,1,2,3,4,5,6,7];" "a.splice(3).join(':') + '|' + a"), nxt_string("3:4:5:6:7|0,1,2") },