From be583662d45b84693b71d44d2ecf6ef39fdf29b9 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Fri, 13 Jun 2014 17:27:44 +0200 Subject: [PATCH] vbscript: Reset error number on error mode change. --- dlls/vbscript/interp.c | 1 + dlls/vbscript/tests/error.vbs | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c index 3b5f78c089d..10641dbbf5c 100644 --- a/dlls/vbscript/interp.c +++ b/dlls/vbscript/interp.c @@ -1276,6 +1276,7 @@ static HRESULT interp_errmode(exec_ctx_t *ctx) TRACE("%d\n", err_mode); ctx->resume_next = err_mode; + ctx->script->err_number = S_OK; return S_OK; } diff --git a/dlls/vbscript/tests/error.vbs b/dlls/vbscript/tests/error.vbs index afe9da2f32d..830344c7fde 100644 --- a/dlls/vbscript/tests/error.vbs +++ b/dlls/vbscript/tests/error.vbs @@ -284,6 +284,20 @@ x = 0 call callTestOnError(false) call ok(x = 1, "x = " & x) +sub testOnErrorClear() + on error resume next + call ok(Err.Number = 0, "Err.Number = " & Err.Number) + throwInt(E_TESTERROR) + call ok(Err.Number = E_TESTERROR, "Err.Number = " & Err.Number) + + on error goto 0 + call ok(Err.Number = 0, "Err.Number = " & Err.Number) + x = "ok" +end sub + +call testOnErrorClear() +call ok(x = "ok", "testOnErrorClear failed") + sub testForEachError() on error resume next -- 2.11.4.GIT