diff --git a/dlls/jscript/dispex.c b/dlls/jscript/dispex.c index cdfbf9f57e46685beacf6d96f5e4b1da49745317..5b41f2702c64e9cf4dc711aaebcc8c0a7195570f 100644 --- a/dlls/jscript/dispex.c +++ b/dlls/jscript/dispex.c @@ -1974,7 +1974,8 @@ static HRESULT disp_invoke(script_ctx_t *ctx, IDispatch *disp, DISPID id, WORD f if(hres == DISP_E_EXCEPTION) { TRACE("DISP_E_EXCEPTION: %08x %s %s\n", ei.scode, debugstr_w(ei.bstrSource), debugstr_w(ei.bstrDescription)); - hres = SUCCEEDED(ei.scode) ? E_FAIL : ei.scode; + reset_ei(ctx->ei); + ctx->ei->error = (SUCCEEDED(ei.scode) || ei.scode == DISP_E_EXCEPTION) ? E_FAIL : ei.scode; SysFreeString(ei.bstrSource); SysFreeString(ei.bstrDescription); SysFreeString(ei.bstrHelpFile);