[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