From 3b80361a707109cd57e70dac5c05e76c33dcf9c6 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 24 Jul 2012 13:17:19 +0200 Subject: [PATCH] jscript: Use prototype for builtin Number properties. --- dlls/jscript/number.c | 10 +++++++++- dlls/jscript/tests/api.js | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/dlls/jscript/number.c b/dlls/jscript/number.c index d2de7905276..910700573e3 100644 --- a/dlls/jscript/number.c +++ b/dlls/jscript/number.c @@ -543,6 +543,14 @@ static const builtin_info_t Number_info = { NULL }; +static const builtin_info_t NumberInst_info = { + JSCLASS_NUMBER, + {NULL, Number_value, 0}, + 0, NULL, + NULL, + NULL +}; + static HRESULT NumberConstr_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, VARIANT *argv, VARIANT *retv, jsexcept_t *ei) { @@ -605,7 +613,7 @@ static HRESULT alloc_number(script_ctx_t *ctx, jsdisp_t *object_prototype, Numbe if(object_prototype) hres = init_dispex(&number->dispex, ctx, &Number_info, object_prototype); else - hres = init_dispex_from_constr(&number->dispex, ctx, &Number_info, ctx->number_constr); + hres = init_dispex_from_constr(&number->dispex, ctx, &NumberInst_info, ctx->number_constr); if(FAILED(hres)) return hres; diff --git a/dlls/jscript/tests/api.js b/dlls/jscript/tests/api.js index a723f6e1f52..fc787a9ffbf 100644 --- a/dlls/jscript/tests/api.js +++ b/dlls/jscript/tests/api.js @@ -227,6 +227,11 @@ ok(!obj.hasOwnProperty('getTime'), "obj.hasOwnProperty('getTime') is true"); ok(!Date.hasOwnProperty('getTime'), "Date.hasOwnProperty('getTime') is true"); ok(Date.prototype.hasOwnProperty('getTime'), "Date.prototype.hasOwnProperty('getTime') is false"); +obj = new Number(); +ok(!obj.hasOwnProperty('toFixed'), "obj.hasOwnProperty('toFixed') is true"); +ok(!Number.hasOwnProperty('toFixed'), "Number.hasOwnProperty('toFixed') is true"); +ok(Number.prototype.hasOwnProperty('toFixed'), "Number.prototype.hasOwnProperty('toFixed') is false"); + tmp = "" + new Object(); ok(tmp === "[object Object]", "'' + new Object() = " + tmp); (tmp = new Array).f = Object.prototype.toString; -- 2.11.4.GIT