Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com> --- dlls/vbscript/tests/run.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index a86711a..e625136 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -100,6 +100,7 @@ DEFINE_EXPECT(Next); DEFINE_EXPECT(GetWindow); DEFINE_EXPECT(GetUIBehavior); DEFINE_EXPECT(EnableModeless); +DEFINE_EXPECT(on_script_error);
#define DISPID_GLOBAL_REPORTSUCCESS 1000 #define DISPID_GLOBAL_TRACE 1001 @@ -138,6 +139,7 @@ static const char *test_name = "(null)"; static int test_counter; static SCRIPTUICHANDLING uic_handling = SCRIPTUICHANDLING_NOUIERROR; static IDispatchEx testObj; +static BOOL overwrite_return = FALSE;
static BSTR a2bstr(const char *str) { @@ -1623,7 +1625,22 @@ static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface, S static HRESULT WINAPI ActiveScriptSite_OnScriptError(IActiveScriptSite *iface, IActiveScriptError *pscripterror) { - return E_NOTIMPL; + HRESULT hr; + EXCEPINFO ei = {0}; + + CHECK_EXPECT(on_script_error); + + hr = IActiveScriptError_GetExceptionInfo(pscripterror, &ei); + ok(hr == S_OK, "GetExceptionInfo %x\n", hr); + + if(overwrite_return) + { + overwrite_return = FALSE; + return S_OK; + } + + /* We return the EXCEPINFO error since returning S_OK means we have handled the error */ + return ei.scode;