From: Alistair Leslie-Hughes Subject: vbscript: Add array out of bounds test Message-Id: Date: Fri, 12 Jun 2015 18:26:06 +1000 Hi, Changelog: vbscript: Add array out of bounds test Best Regards Alistair Leslie-Hughes From afa9ada7ff2d0d234b12a2394d1ce3b08b8018cb Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 12 Jun 2015 13:43:07 +1000 Subject: [PATCH 2/2] Add array out of bounds test --- dlls/vbscript/tests/lang.vbs | 5 +++++ dlls/vbscript/tests/run.c | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs index b23b709..2c08a6a 100644 --- a/dlls/vbscript/tests/lang.vbs +++ b/dlls/vbscript/tests/lang.vbs @@ -809,6 +809,11 @@ Class TestClass publicFunction = 4 End Function + Public Function exceptionArray() + Dim arr(3) + arr(4) = 1 + End Function + Public Property Get gsProp() gsProp = privateProp funcCalled = "gsProp get" diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index a86711a..fd00add 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -258,7 +258,7 @@ static IServiceProvider caller_sp = { &ServiceProviderVtbl }; static void test_disp(IDispatch *disp) { - DISPID id, public_prop_id, public_prop2_id, public_func_id, public_sub_id, defvalget_id, gs_getter_id; + DISPID id, public_prop_id, public_prop2_id, public_func_id, public_sub_id, defvalget_id, gs_getter_id, execpt_id; DISPID named_args[5] = {DISPID_PROPERTYPUT}; VARIANT v, args[5]; DISPPARAMS dp = {args, named_args}; @@ -298,6 +298,11 @@ static void test_disp(IDispatch *disp) ok(hres == DISP_E_UNKNOWNNAME, "GetDispID(privateProp) failed: %08x, expected DISP_E_UNKNOWNNAME\n", hres); ok(id == -1, "id = %d\n", id); + str = a2bstr("exceptionArray"); + hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &execpt_id); + SysFreeString(str); + ok(hres == S_OK, "GetDispID(exceptionArray) failed: %08x\n", hres); + str = a2bstr("class_initialize"); hres = IDispatchEx_GetDispID(dispex, str, fdexNameCaseInsensitive, &id); SysFreeString(str); @@ -409,6 +414,16 @@ static void test_disp(IDispatch *disp) ok(public_sub_id != -1, "public_func_id = -1\n"); dp.cArgs = dp.cNamedArgs = 0; + hres = IDispatchEx_InvokeEx(dispex, execpt_id, 0, DISPATCH_METHOD, &dp, &v, &ei, NULL); + todo_wine ok(hres == DISP_E_EXCEPTION, "InvokeEx returned: %08x\n", hres); + if(hres == DISP_E_EXCEPTION) + { + SysFreeString(ei.bstrSource); + SysFreeString(ei.bstrDescription); + SysFreeString(ei.bstrHelpFile); + } + + dp.cArgs = dp.cNamedArgs = 0; hres = IDispatchEx_InvokeEx(dispex, public_func_id, 0, DISPATCH_PROPERTYGET|DISPATCH_METHOD, &dp, &v, &ei, NULL); ok(hres == S_OK, "InvokeEx failed: %08x\n", hres); ok(V_VT(&v) == VT_I2, "V_VT(v) = %d\n", V_VT(&v)); -- 1.9.1