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>
This commit is contained in:
Jeff Hostetler
2016-06-03 15:38:25 -04:00
committed by Johannes Schindelin
parent 85c9c759ec
commit 6894e73bb7

View File

@@ -2138,8 +2138,34 @@ int mingw_raise(int sig)
sigint_fn(SIGINT);
return 0;
#if defined(_MSC_VER)
/*
* <signal.h> in the CRT 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.
*/
/*case SIGINT:*/
case SIGILL:
case SIGFPE:
case SIGSEGV:
case SIGTERM:
case SIGBREAK:
case SIGABRT:
case SIGABRT_COMPAT:
return raise(sig);
default:
errno = EINVAL;
return -1;
#else
default:
return raise(sig);
#endif
}
}