Jacek Caban : vbscript: Lookup visible items before global members in lookup_identifier.
Module: wine Branch: master Commit: e4bfd4e0574c435f20501d3a0f98f4239fbf547a URL: http://source.winehq.org/git/wine.git/?a=commit;h=e4bfd4e0574c435f20501d3a0f... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Mar 26 11:52:33 2012 +0200 vbscript: Lookup visible items before global members in lookup_identifier. --- dlls/vbscript/interp.c | 22 ++++++++++++---------- dlls/vbscript/tests/run.c | 6 ++++++ 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c index 4be1d43..df30e0e 100644 --- a/dlls/vbscript/interp.c +++ b/dlls/vbscript/interp.c @@ -164,16 +164,6 @@ static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_ } LIST_FOR_EACH_ENTRY(item, &ctx->script->named_items, named_item_t, entry) { - if((item->flags & SCRIPTITEM_GLOBALMEMBERS)) { - hres = disp_get_id(item->disp, name, invoke_type, FALSE, &id); - if(SUCCEEDED(hres)) { - ref->type = REF_DISP; - ref->u.d.disp = item->disp; - ref->u.d.id = id; - return S_OK; - } - } - if((item->flags & SCRIPTITEM_ISVISIBLE) && !strcmpiW(item->name, name)) { if(!item->disp) { IUnknown *unk; @@ -198,6 +188,18 @@ static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_ } } + LIST_FOR_EACH_ENTRY(item, &ctx->script->named_items, named_item_t, entry) { + if((item->flags & SCRIPTITEM_GLOBALMEMBERS)) { + hres = disp_get_id(item->disp, name, invoke_type, FALSE, &id); + if(SUCCEEDED(hres)) { + ref->type = REF_DISP; + ref->u.d.disp = item->disp; + ref->u.d.id = id; + return S_OK; + } + } + } + ref->type = REF_NONE; return S_OK; } diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index 43c9be4..3fb506b 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -1197,6 +1197,12 @@ static void run_tests(void) CHECK_CALLED(global_success_d); CHECK_CALLED(global_success_i); + SET_EXPECT(global_success_d); + SET_EXPECT(global_success_i); + parse_script_a("test.reportSuccess()"); + CHECK_CALLED(global_success_d); + CHECK_CALLED(global_success_i); + SET_EXPECT(global_vbvar_d); SET_EXPECT(global_vbvar_i); parse_script_a("Option Explicit\nvbvar = 3");
participants (1)
-
Alexandre Julliard