diff options
| author | Jeff Hostetler <jeffhost@microsoft.com> | 2019-06-25 07:49:41 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2019-06-25 10:46:58 -0700 |
| commit | 446df60367be5f3a97f7bac12071878d1fdbebd2 (patch) | |
| tree | 60d3cf52a86abf1aade0c655c3b39a2b2fb54291 /compat/mingw.c | |
| parent | b7bd9a73381df1dcc3c408a8f4379cb6f1db6785 (diff) | |
| download | git-446df60367be5f3a97f7bac12071878d1fdbebd2.tar.xz | |
msvc: do not pretend to support all signals
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 <jeffhost@microsoft.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'compat/mingw.c')
| -rw-r--r-- | compat/mingw.c | 25 |
1 files changed, 25 insertions, 0 deletions
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 + } } |
