diff --git a/examples/spec/arrays.js b/examples/spec/arrays.js index 72091a5..bf89bd1 100644 --- a/examples/spec/arrays.js +++ b/examples/spec/arrays.js @@ -232,6 +232,11 @@ let spliceArr2 = [1, 2, 3]; spliceArr2.splice(1, 0, 99, 100); testDeep('splice insert', spliceArr2, [1, 99, 100, 2, 3]); +let spliceNoArgs = [1, 2]; +let spliceNoArgsRemoved = spliceNoArgs.splice(); +testDeep('splice no args leaves array', spliceNoArgs, [1, 2]); +testDeep('splice no args removes nothing', spliceNoArgsRemoved, []); + let entriesArr = ['a', 'b', 'c']; let entriesResult = []; for (let [i, v] of entriesArr.entries()) entriesResult.push([i, v]); diff --git a/src/ant.c b/src/ant.c index c609665..11bfbff 100644 --- a/src/ant.c +++ b/src/ant.c @@ -9938,7 +9938,7 @@ static ant_value_t builtin_array_splice(ant_t *js, ant_value_t *args, int nargs) if (start > (int)len) start = (int)len; } - int deleteCount = (int)len - start; + int deleteCount = nargs == 0 ? 0 : (int)len - start; if (nargs >= 2 && vtype(args[1]) == T_NUM) { deleteCount = (int) tod(args[1]); if (deleteCount < 0) deleteCount = 0;