Jacek Caban : vbscript: Lookup this object in lookup_identifier only if it's an actual VBScript object.
Module: wine Branch: master Commit: 3c366be35384790713d9cc5e06ab28dcda5bf50f URL: https://source.winehq.org/git/wine.git/?a=commit;h=3c366be35384790713d9cc5e0... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Nov 5 14:08:47 2019 +0100 vbscript: Lookup this object in lookup_identifier only if it's an actual VBScript object. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/vbscript/interp.c | 14 +++++++------- dlls/vbscript/tests/run.c | 6 ++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c index 4800ae7ce6..a74c6c320e 100644 --- a/dlls/vbscript/interp.c +++ b/dlls/vbscript/interp.c @@ -139,14 +139,14 @@ static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_ return S_OK; } } - } - hres = disp_get_id(ctx->this_obj, name, invoke_type, TRUE, &id); - if(SUCCEEDED(hres)) { - ref->type = REF_DISP; - ref->u.d.disp = ctx->this_obj; - ref->u.d.id = id; - return S_OK; + hres = vbdisp_get_id(ctx->vbthis, name, invoke_type, TRUE, &id); + if(SUCCEEDED(hres)) { + ref->type = REF_DISP; + ref->u.d.disp = (IDispatch*)&ctx->vbthis->IDispatchEx_iface; + ref->u.d.id = id; + return S_OK; + } } } diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index 9ed1096a4d..707fd89493 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -3025,6 +3025,12 @@ static void run_tests(void) parse_script_a("testOptionalArg 1,,2"); CHECK_CALLED(global_testoptionalarg_i); + parse_script_a("sub x()\n" + " dim y\n" + " y = cint(3)\n" + "end sub\n" + "x\n"); + strict_dispid_check = FALSE; SET_EXPECT(testobj_value_i);
participants (1)
-
Alexandre Julliard