зеркало из https://github.com/microsoft/git.git
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>
This commit is contained in:
Родитель
b7bd9a7338
Коммит
446df60367
|
@ -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
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче