[PATCH v2 18/20] msvc: do not pretend to support all signals
From: Jeff Hostetler via GitGitGadget <hidden>
Date: 2019-06-19 21:06:19
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Jeff Hostetler via GitGitGadget <hidden>
Date: 2019-06-19 21:06:19
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Jeff Hostetler <redacted> This special-cases various signals that are not supported on Windows, such as SIGPIPE. These cause the UCRT to throw asserts (at least in debug mode). Signed-off-by: Jeff Hostetler <redacted> Signed-off-by: Johannes Schindelin <redacted> --- compat/mingw.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
diff --git a/compat/mingw.c b/compat/mingw.c
index 667285887a..d01e88c2f8 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c@@ -2119,8 +2119,33 @@ int mingw_raise(int sig) sigint_fn(SIGINT); return 0; +#if defined(_MSC_VER) + case SIGILL: + case SIGFPE: + case SIGSEGV: + case SIGTERM: + case SIGBREAK: + case SIGABRT: + case SIGABRT_COMPAT: + /* + * The <signal.h> header in the MS C Runtime defines 8 signals + * as being supported on the platform. Anything else causes an + * "Invalid signal or error" (which in DEBUG builds causes the + * Abort/Retry/Ignore dialog). We by-pass the CRT for things we + * already know will fail. + */ + return raise(sig); + default: + errno = EINVAL; + return -1; + +#else + default: return raise(sig); + +#endif + } }
--
gitgitgadget