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>maint
parent
b7bd9a7338
commit
446df60367
|
@ -2119,8 +2119,33 @@ int mingw_raise(int sig)
|
||||||
sigint_fn(SIGINT);
|
sigint_fn(SIGINT);
|
||||||
return 0;
|
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:
|
default:
|
||||||
return raise(sig);
|
return raise(sig);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue