Latest MSVCR80 doesn't tolerate unsupported signal numbers, throwing
[openssl.git] / crypto / ui / ui_openssl.c
index 7c80f5feb21c8bce41ff0a262760be7903705ef4..f186a714dc6ca8571303e12caf745dbc4029af6c 100644 (file)
@@ -586,6 +586,14 @@ static void pushsig(void)
        sa.sa_handler=recsig;
 #endif
 
+#ifdef OPENSSL_SYS_WIN32
+       savsig[SIGABRT]=signal(SIGABRT,recsig);
+       savsig[SIGFPE]=signal(SIGFPE,recsig);
+       savsig[SIGILL]=signal(SIGILL,recsig);
+       savsig[SIGINT]=signal(SIGINT,recsig);
+       savsig[SIGSEGV]=signal(SIGSEGV,recsig);
+       savsig[SIGTERM]=signal(SIGTERM,recsig);
+#else
        for (i=1; i<NX509_SIG; i++)
                {
 #ifdef SIGUSR1
@@ -606,6 +614,7 @@ static void pushsig(void)
                savsig[i]=signal(i,recsig);
 #endif
                }
+#endif
 
 #ifdef SIGWINCH
        signal(SIGWINCH,SIG_DFL);
@@ -616,6 +625,14 @@ static void popsig(void)
        {
        int i;
 
+#ifdef OPENSSL_SYS_WIN32
+       signal(SIGABRT,savsig[SIGABRT]);
+       signal(SIGFPE,savsig[SIGFPE]);
+       signal(SIGILL,savsig[SIGILL]);
+       signal(SIGINT,savsig[SIGINT]);
+       signal(SIGSEGV,savsig[SIGSEGV]);
+       signal(SIGTERM,savsig[SIGTERM]);
+#else
        for (i=1; i<NX509_SIG; i++)
                {
 #ifdef SIGUSR1
@@ -632,6 +649,7 @@ static void popsig(void)
                signal(i,savsig[i]);
 #endif
                }
+#endif
        }
 
 static void recsig(int i)