From 8b338786aa57f07f8cea3185e1f8fe3fcaf58aa7 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Wed, 23 Sep 2009 16:10:36 +0200 Subject: [PATCH] jscript: Use script LCID in *disp_propget* functions. --- dlls/jscript/array.c | 24 ++++++++++++------------ dlls/jscript/dispex.c | 32 +++++++++++++++----------------- dlls/jscript/engine.c | 6 +++--- dlls/jscript/function.c | 4 ++-- dlls/jscript/jscript.h | 8 ++++---- dlls/jscript/jsutils.c | 2 +- 6 files changed, 37 insertions(+), 39 deletions(-) diff --git a/dlls/jscript/array.c b/dlls/jscript/array.c index 1bdc68e113..84b2e49e38 100644 --- a/dlls/jscript/array.c +++ b/dlls/jscript/array.c @@ -51,7 +51,7 @@ static HRESULT get_jsdisp_length(DispatchEx *obj, LCID lcid, jsexcept_t *ei, DWO VARIANT var; HRESULT hres; - hres = jsdisp_propget_name(obj, lengthW, lcid, &var, ei, NULL/*FIXME*/); + hres = jsdisp_propget_name(obj, lengthW, &var, ei, NULL/*FIXME*/); if(FAILED(hres)) return hres; @@ -136,7 +136,7 @@ static HRESULT concat_array(DispatchEx *array, ArrayInstance *obj, DWORD *len, L HRESULT hres; for(i=0; i < obj->length; i++) { - hres = jsdisp_propget_idx(&obj->dispex, i, lcid, &var, ei, caller); + hres = jsdisp_propget_idx(&obj->dispex, i, &var, ei, caller); if(hres == DISP_E_UNKNOWNNAME) continue; if(FAILED(hres)) @@ -237,7 +237,7 @@ static HRESULT array_join(DispatchEx *array, LCID lcid, DWORD length, const WCHA return E_OUTOFMEMORY; for(i=0; i < length; i++) { - hres = jsdisp_propget_idx(array, i, lcid, &var, ei, caller); + hres = jsdisp_propget_idx(array, i, &var, ei, caller); if(FAILED(hres)) break; @@ -374,7 +374,7 @@ static HRESULT Array_pop(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAMS * sprintfW(buf, formatW, --length); hres = jsdisp_get_id(dispex, buf, 0, &id); if(SUCCEEDED(hres)) { - hres = jsdisp_propget(dispex, id, lcid, &val, ei, caller); + hres = jsdisp_propget(dispex, id, &val, ei, caller); if(FAILED(hres)) return hres; @@ -476,14 +476,14 @@ static HRESULT Array_shift(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARAMS return S_OK; } - hres = jsdisp_propget_idx(dispex, 0, lcid, &ret, ei, caller); + hres = jsdisp_propget_idx(dispex, 0, &ret, ei, caller); if(hres == DISP_E_UNKNOWNNAME) { V_VT(&ret) = VT_EMPTY; hres = S_OK; } for(i=1; SUCCEEDED(hres) && i delete_cnt) { for(i=length-delete_cnt; SUCCEEDED(hres) && i != start; i--) { - hres = jsdisp_propget_idx(dispex, i+delete_cnt-1, lcid, &v, ei, caller); + hres = jsdisp_propget_idx(dispex, i+delete_cnt-1, &v, ei, caller); if(hres == DISP_E_UNKNOWNNAME) hres = jsdisp_delete_idx(dispex, i+add_args-1); else if(SUCCEEDED(hres)) @@ -968,7 +968,7 @@ static HRESULT Array_unshift(DispatchEx *dispex, LCID lcid, WORD flags, DISPPARA hres = jsdisp_get_id(dispex, str, 0, &id); if(SUCCEEDED(hres)) { - hres = jsdisp_propget(dispex, id, lcid, &var, ei, caller); + hres = jsdisp_propget(dispex, id, &var, ei, caller); if(FAILED(hres)) return hres; diff --git a/dlls/jscript/dispex.c b/dlls/jscript/dispex.c index 73382f18d5..9ab509b66a 100644 --- a/dlls/jscript/dispex.c +++ b/dlls/jscript/dispex.c @@ -284,7 +284,7 @@ static HRESULT invoke_prop_func(DispatchEx *This, DispatchEx *jsthis, dispex_pro return E_FAIL; } -static HRESULT prop_get(DispatchEx *This, dispex_prop_t *prop, LCID lcid, DISPPARAMS *dp, +static HRESULT prop_get(DispatchEx *This, dispex_prop_t *prop, DISPPARAMS *dp, VARIANT *retv, jsexcept_t *ei, IServiceProvider *caller) { HRESULT hres; @@ -304,11 +304,11 @@ static HRESULT prop_get(DispatchEx *This, dispex_prop_t *prop, LCID lcid, DISPPA hres = VariantCopy(retv, &prop->u.var); }else { - hres = prop->u.p->invoke(This, lcid, DISPATCH_PROPERTYGET, dp, retv, ei, caller); + hres = prop->u.p->invoke(This, This->ctx->lcid, DISPATCH_PROPERTYGET, dp, retv, ei, caller); } break; case PROP_PROTREF: - hres = prop_get(This->prototype, This->prototype->props+prop->u.ref, lcid, dp, retv, ei, caller); + hres = prop_get(This->prototype, This->prototype->props+prop->u.ref, dp, retv, ei, caller); break; case PROP_VARIANT: hres = VariantCopy(retv, &prop->u.var); @@ -556,7 +556,7 @@ static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lc hres = invoke_prop_func(This, This, prop, wFlags, pdp, pvarRes, &jsexcept, pspCaller); break; case DISPATCH_PROPERTYGET: - hres = prop_get(This, prop, lcid, pdp, pvarRes, &jsexcept, pspCaller); + hres = prop_get(This, prop, pdp, pvarRes, &jsexcept, pspCaller); break; case DISPATCH_PROPERTYPUT: hres = prop_put(This, prop, lcid, pdp, &jsexcept, pspCaller); @@ -775,7 +775,7 @@ HRESULT init_dispex_from_constr(DispatchEx *dispex, script_ctx_t *ctx, const bui V_VT(&var) = VT_EMPTY; memset(&jsexcept, 0, sizeof(jsexcept)); - hres = prop_get(constr, prop, ctx->lcid, NULL, &var, &jsexcept, NULL/*FIXME*/); + hres = prop_get(constr, prop, NULL, &var, &jsexcept, NULL/*FIXME*/); if(FAILED(hres)) { ERR("Could not get prototype\n"); return hres; @@ -959,8 +959,7 @@ HRESULT disp_propput(IDispatch *disp, DISPID id, LCID lcid, VARIANT *val, jsexce return hres; } -HRESULT jsdisp_propget_name(DispatchEx *obj, const WCHAR *name, LCID lcid, VARIANT *var, - jsexcept_t *ei, IServiceProvider *caller) +HRESULT jsdisp_propget_name(DispatchEx *obj, const WCHAR *name, VARIANT *var, jsexcept_t *ei, IServiceProvider *caller) { DISPPARAMS dp = {NULL, NULL, 0, 0}; dispex_prop_t *prop; @@ -974,21 +973,20 @@ HRESULT jsdisp_propget_name(DispatchEx *obj, const WCHAR *name, LCID lcid, VARIA if(!prop) return S_OK; - return prop_get(obj, prop, lcid, &dp, var, ei, caller); + return prop_get(obj, prop, &dp, var, ei, caller); } -HRESULT jsdisp_propget_idx(DispatchEx *obj, DWORD idx, LCID lcid, VARIANT *var, jsexcept_t *ei, IServiceProvider *caller) +HRESULT jsdisp_propget_idx(DispatchEx *obj, DWORD idx, VARIANT *var, jsexcept_t *ei, IServiceProvider *caller) { WCHAR buf[12]; static const WCHAR formatW[] = {'%','d',0}; sprintfW(buf, formatW, idx); - return jsdisp_propget_name(obj, buf, lcid, var, ei, caller); + return jsdisp_propget_name(obj, buf, var, ei, caller); } -HRESULT jsdisp_propget(DispatchEx *jsdisp, DISPID id, LCID lcid, VARIANT *val, jsexcept_t *ei, - IServiceProvider *caller) +HRESULT jsdisp_propget(DispatchEx *jsdisp, DISPID id, VARIANT *val, jsexcept_t *ei, IServiceProvider *caller) { DISPPARAMS dp = {NULL,NULL,0,0}; dispex_prop_t *prop; @@ -998,10 +996,10 @@ HRESULT jsdisp_propget(DispatchEx *jsdisp, DISPID id, LCID lcid, VARIANT *val, j return DISP_E_MEMBERNOTFOUND; V_VT(val) = VT_EMPTY; - return prop_get(jsdisp, prop, lcid, &dp, val, ei, caller); + return prop_get(jsdisp, prop, &dp, val, ei, caller); } -HRESULT disp_propget(IDispatch *disp, DISPID id, LCID lcid, VARIANT *val, jsexcept_t *ei, IServiceProvider *caller) +HRESULT disp_propget(script_ctx_t *ctx, IDispatch *disp, DISPID id, VARIANT *val, jsexcept_t *ei, IServiceProvider *caller) { DISPPARAMS dp = {NULL,NULL,0,0}; IDispatchEx *dispex; @@ -1010,7 +1008,7 @@ HRESULT disp_propget(IDispatch *disp, DISPID id, LCID lcid, VARIANT *val, jsexce jsdisp = iface_to_jsdisp((IUnknown*)disp); if(jsdisp) { - hres = jsdisp_propget(jsdisp, id, lcid, val, ei, caller); + hres = jsdisp_propget(jsdisp, id, val, ei, caller); jsdisp_release(jsdisp); return hres; } @@ -1020,10 +1018,10 @@ HRESULT disp_propget(IDispatch *disp, DISPID id, LCID lcid, VARIANT *val, jsexce ULONG err = 0; TRACE("using IDispatch\n"); - return IDispatch_Invoke(disp, id, &IID_NULL, lcid, INVOKE_PROPERTYGET, &dp, val, &ei->ei, &err); + return IDispatch_Invoke(disp, id, &IID_NULL, ctx->lcid, INVOKE_PROPERTYGET, &dp, val, &ei->ei, &err); } - hres = IDispatchEx_InvokeEx(dispex, id, lcid, INVOKE_PROPERTYGET, &dp, val, &ei->ei, caller); + hres = IDispatchEx_InvokeEx(dispex, id, ctx->lcid, INVOKE_PROPERTYGET, &dp, val, &ei->ei, caller); IDispatchEx_Release(dispex); return hres; diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index a18eb6bf27..c49a358cce 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -77,7 +77,7 @@ static HRESULT exprval_value(script_ctx_t *ctx, exprval_t *val, jsexcept_t *ei, return E_FAIL; } - return disp_propget(val->u.idref.disp, val->u.idref.id, ctx->lcid, ret, ei, NULL/*FIXME*/); + return disp_propget(ctx, val->u.idref.disp, val->u.idref.id, ret, ei, NULL/*FIXME*/); case EXPRVAL_NAMEREF: break; case EXPRVAL_INVALID: @@ -1326,7 +1326,7 @@ HRESULT function_expression_eval(exec_ctx_t *ctx, expression_t *_expr, DWORD fla TRACE("\n"); if(expr->identifier) { - hres = jsdisp_propget_name(ctx->var_disp, expr->identifier, ctx->parser->script->lcid, &var, ei, NULL/*FIXME*/); + hres = jsdisp_propget_name(ctx->var_disp, expr->identifier, &var, ei, NULL/*FIXME*/); if(FAILED(hres)) return hres; }else { @@ -1989,7 +1989,7 @@ static HRESULT instanceof_eval(exec_ctx_t *ctx, VARIANT *inst, VARIANT *objv, js } if(is_class(obj, JSCLASS_FUNCTION)) { - hres = jsdisp_propget_name(obj, prototypeW, ctx->parser->script->lcid, &var, ei, NULL/*FIXME*/); + hres = jsdisp_propget_name(obj, prototypeW, &var, ei, NULL/*FIXME*/); }else { FIXME("throw TypeError\n"); hres = E_FAIL; diff --git a/dlls/jscript/function.c b/dlls/jscript/function.c index 1f1826b6be..facb7635eb 100644 --- a/dlls/jscript/function.c +++ b/dlls/jscript/function.c @@ -374,7 +374,7 @@ static HRESULT array_to_args(DispatchEx *arg_array, LCID lcid, jsexcept_t *ei, I DWORD length, i; HRESULT hres; - hres = jsdisp_propget_name(arg_array, lengthW, lcid, &var, ei, NULL/*FIXME*/); + hres = jsdisp_propget_name(arg_array, lengthW, &var, ei, NULL/*FIXME*/); if(FAILED(hres)) return hres; @@ -388,7 +388,7 @@ static HRESULT array_to_args(DispatchEx *arg_array, LCID lcid, jsexcept_t *ei, I return E_OUTOFMEMORY; for(i=0; ilcid, ret, ei, NULL /*FIXME*/); + return disp_propget(ctx, V_DISPATCH(v), DISPID_VALUE, ret, ei, NULL /*FIXME*/); } if(hint == NO_HINT) -- 2.32.0.93.g670b81a890