From 2ab65294e47d7ce87adf609e0d32adca109c690e Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Thu, 19 Jun 2014 15:57:51 +0200 Subject: [PATCH] Fix wrong number of arguments passed by Function.prototype.apply. Makes test unit-tests/apply-args.js pass. --- envs/es5.env | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/envs/es5.env b/envs/es5.env index a4ff09d4..967eae7e 100644 --- a/envs/es5.env +++ b/envs/es5.env @@ -953,6 +953,16 @@ let [%applylambda] = func(this, args) { } else { undefined }; %ObjectTypeCheck(applyArgs); applyArgs := %mkArgsObj(applyArgs); + // %mkArgsObj adds a "%new" property, which increases the length. + if (prim("typeof", args["1"]) !== 'undefined' && prim("hasOwnProperty", args["1"], "length")) { + %defineOwnProperty(applyArgs, "length", { + [] + "value": {#value args["1"]["length"], #writable false}, + "writable" : {#value true, #writable false}, + "configurable": {#value true, #writable false}, + "enumerable": {#value false, #writable false} + }) + }; this(args["0"], applyArgs) } }