[PATCH] vbscript/tests Add array out of bounds test
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Tue Oct 20 03:05:45 CDT 2015
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
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
More information about the wine-patches
mailing list