diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c index f5c8b03..c7b3be9 100644 --- a/dlls/msvcrt/except.c +++ b/dlls/msvcrt/except.c @@ -189,11 +189,15 @@ void msvcrt_free_signals(void) */ MSVCRT___sighandler_t CDECL MSVCRT_signal(int sig, MSVCRT___sighandler_t func) { - MSVCRT___sighandler_t ret = MSVCRT_SIG_ERR; + MSVCRT___sighandler_t ret; TRACE("(%d, %p)\n", sig, func); - if (func == MSVCRT_SIG_ERR) return MSVCRT_SIG_ERR; + if (func == MSVCRT_SIG_ERR) + { + *MSVCRT__errno() = MSVCRT_EINVAL; + return MSVCRT_SIG_ERR; + } switch (sig) { @@ -211,6 +215,7 @@ MSVCRT___sighandler_t CDECL MSVCRT_signal(int sig, MSVCRT___sighandler_t func) sighandlers[sig] = func; break; default: + *MSVCRT__errno() = MSVCRT_EINVAL; ret = MSVCRT_SIG_ERR; } return ret;