aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrik Gramner <gramner@twoorioles.com>2024-05-12 17:12:18 +0200
committerHenrik Gramner <gramner@twoorioles.com>2024-05-13 14:01:17 +0200
commitcc1137c85b5cc7e082e7040f4160e5a6da1f06ff (patch)
tree704de38ae09a0e93455b5ee3bf8664f19ab66302
parent471549f2681d525a148b54085fcbba9e48e532c4 (diff)
downloadlibdav1d-cc1137c85b5cc7e082e7040f4160e5a6da1f06ff.tar.gz
checkasm: Eliminate unreachable code in the Windows exception handler
-rw-r--r--tests/checkasm/checkasm.c53
1 files changed, 26 insertions, 27 deletions
diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c
index e071cc4..2faa01f 100644
--- a/tests/checkasm/checkasm.c
+++ b/tests/checkasm/checkasm.c
@@ -543,34 +543,33 @@ checkasm_context checkasm_context_buf;
#ifdef _WIN32
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
static LONG NTAPI signal_handler(EXCEPTION_POINTERS *const e) {
- if (state.sig != SIG_ATOMIC_MAX)
- return EXCEPTION_CONTINUE_SEARCH;
-
- int s;
- switch (e->ExceptionRecord->ExceptionCode) {
- case EXCEPTION_FLT_DIVIDE_BY_ZERO:
- case EXCEPTION_INT_DIVIDE_BY_ZERO:
- s = SIGFPE;
- break;
- case EXCEPTION_ILLEGAL_INSTRUCTION:
- case EXCEPTION_PRIV_INSTRUCTION:
- s = SIGILL;
- break;
- case EXCEPTION_ACCESS_VIOLATION:
- case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
- case EXCEPTION_DATATYPE_MISALIGNMENT:
- case EXCEPTION_STACK_OVERFLOW:
- s = SIGSEGV;
- break;
- case EXCEPTION_IN_PAGE_ERROR:
- s = SIGBUS;
- break;
- default:
- return EXCEPTION_CONTINUE_SEARCH;
+ if (state.sig == SIG_ATOMIC_MAX) {
+ int s;
+ switch (e->ExceptionRecord->ExceptionCode) {
+ case EXCEPTION_FLT_DIVIDE_BY_ZERO:
+ case EXCEPTION_INT_DIVIDE_BY_ZERO:
+ s = SIGFPE;
+ break;
+ case EXCEPTION_ILLEGAL_INSTRUCTION:
+ case EXCEPTION_PRIV_INSTRUCTION:
+ s = SIGILL;
+ break;
+ case EXCEPTION_ACCESS_VIOLATION:
+ case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
+ case EXCEPTION_DATATYPE_MISALIGNMENT:
+ case EXCEPTION_STACK_OVERFLOW:
+ s = SIGSEGV;
+ break;
+ case EXCEPTION_IN_PAGE_ERROR:
+ s = SIGBUS;
+ break;
+ default:
+ return EXCEPTION_CONTINUE_SEARCH;
+ }
+ state.sig = s;
+ checkasm_load_context();
}
- state.sig = s;
- checkasm_load_context();
- return EXCEPTION_CONTINUE_EXECUTION; /* never reached, but shuts up gcc */
+ return EXCEPTION_CONTINUE_SEARCH;
}
#endif
#else