Jacek Caban : jscript: Don't use builtin property for *Error constructors.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Feb 5 10:42:43 CST 2015
Module: wine
Branch: master
Commit: 90d3569c6292f18096d4306317d8fff3890990cf
URL: http://source.winehq.org/git/wine.git/?a=commit;h=90d3569c6292f18096d4306317d8fff3890990cf
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Feb 5 14:47:51 2015 +0100
jscript: Don't use builtin property for *Error constructors.
---
dlls/jscript/global.c | 100 ++++++++++++++------------------------------------
1 file changed, 28 insertions(+), 72 deletions(-)
diff --git a/dlls/jscript/global.c b/dlls/jscript/global.c
index 1d1ec5b..dbfb95b 100644
--- a/dlls/jscript/global.c
+++ b/dlls/jscript/global.c
@@ -112,71 +112,6 @@ static WCHAR int_to_char(int i)
return 'A'+i-10;
}
-static HRESULT constructor_call(jsdisp_t *constr, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
-{
- if(flags != DISPATCH_PROPERTYGET)
- return jsdisp_call_value(constr, NULL, flags, argc, argv, r);
-
- *r = jsval_obj(jsdisp_addref(constr));
- return S_OK;
-}
-
-static HRESULT JSGlobal_EvalError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
- jsval_t *r)
-{
- TRACE("\n");
-
- return constructor_call(ctx->eval_error_constr, flags, argc, argv, r);
-}
-
-static HRESULT JSGlobal_RangeError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
- jsval_t *r)
-{
- TRACE("\n");
-
- return constructor_call(ctx->range_error_constr, flags, argc, argv, r);
-}
-
-static HRESULT JSGlobal_RegExpError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
- jsval_t *r)
-{
- TRACE("\n");
-
- return constructor_call(ctx->regexp_error_constr, flags, argc, argv, r);
-}
-
-static HRESULT JSGlobal_ReferenceError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
- jsval_t *r)
-{
- TRACE("\n");
-
- return constructor_call(ctx->reference_error_constr, flags, argc, argv, r);
-}
-
-static HRESULT JSGlobal_SyntaxError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
- jsval_t *r)
-{
- TRACE("\n");
-
- return constructor_call(ctx->syntax_error_constr, flags, argc, argv, r);
-}
-
-static HRESULT JSGlobal_TypeError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
- jsval_t *r)
-{
- TRACE("\n");
-
- return constructor_call(ctx->type_error_constr, flags, argc, argv, r);
-}
-
-static HRESULT JSGlobal_URIError(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
- jsval_t *r)
-{
- TRACE("\n");
-
- return constructor_call(ctx->uri_error_constr, flags, argc, argv, r);
-}
-
static HRESULT JSGlobal_Enumerator(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
jsval_t *r)
{
@@ -1001,18 +936,11 @@ static HRESULT JSGlobal_decodeURIComponent(script_ctx_t *ctx, vdisp_t *jsthis, W
static const builtin_prop_t JSGlobal_props[] = {
{CollectGarbageW, JSGlobal_CollectGarbage, PROPF_METHOD},
{EnumeratorW, JSGlobal_Enumerator, PROPF_METHOD|7},
- {EvalErrorW, JSGlobal_EvalError, PROPF_CONSTR|1},
{_GetObjectW, JSGlobal_GetObject, PROPF_METHOD|2},
- {RangeErrorW, JSGlobal_RangeError, PROPF_CONSTR|1},
- {ReferenceErrorW, JSGlobal_ReferenceError, PROPF_CONSTR|1},
- {RegExpErrorW, JSGlobal_RegExpError, PROPF_CONSTR|1},
{ScriptEngineW, JSGlobal_ScriptEngine, PROPF_METHOD},
{ScriptEngineBuildVersionW, JSGlobal_ScriptEngineBuildVersion, PROPF_METHOD},
{ScriptEngineMajorVersionW, JSGlobal_ScriptEngineMajorVersion, PROPF_METHOD},
{ScriptEngineMinorVersionW, JSGlobal_ScriptEngineMinorVersion, PROPF_METHOD},
- {SyntaxErrorW, JSGlobal_SyntaxError, PROPF_CONSTR|1},
- {TypeErrorW, JSGlobal_TypeError, PROPF_CONSTR|1},
- {URIErrorW, JSGlobal_URIError, PROPF_CONSTR|1},
{decodeURIW, JSGlobal_decodeURI, PROPF_METHOD|1},
{decodeURIComponentW, JSGlobal_decodeURIComponent, PROPF_METHOD|1},
{encodeURIW, JSGlobal_encodeURI, PROPF_METHOD|1},
@@ -1087,6 +1015,34 @@ static HRESULT init_constructors(script_ctx_t *ctx, jsdisp_t *object_prototype)
if(FAILED(hres))
return hres;
+ hres = jsdisp_propput_dontenum(ctx->global, EvalErrorW, jsval_obj(ctx->eval_error_constr));
+ if(FAILED(hres))
+ return hres;
+
+ hres = jsdisp_propput_dontenum(ctx->global, RangeErrorW, jsval_obj(ctx->range_error_constr));
+ if(FAILED(hres))
+ return hres;
+
+ hres = jsdisp_propput_dontenum(ctx->global, ReferenceErrorW, jsval_obj(ctx->reference_error_constr));
+ if(FAILED(hres))
+ return hres;
+
+ hres = jsdisp_propput_dontenum(ctx->global, RegExpErrorW, jsval_obj(ctx->regexp_error_constr));
+ if(FAILED(hres))
+ return hres;
+
+ hres = jsdisp_propput_dontenum(ctx->global, SyntaxErrorW, jsval_obj(ctx->syntax_error_constr));
+ if(FAILED(hres))
+ return hres;
+
+ hres = jsdisp_propput_dontenum(ctx->global, TypeErrorW, jsval_obj(ctx->type_error_constr));
+ if(FAILED(hres))
+ return hres;
+
+ hres = jsdisp_propput_dontenum(ctx->global, URIErrorW, jsval_obj(ctx->uri_error_constr));
+ if(FAILED(hres))
+ return hres;
+
hres = create_number_constr(ctx, object_prototype, &ctx->number_constr);
if(FAILED(hres))
return hres;
More information about the wine-cvs
mailing list