changeset 601:9a75fc7968ba

* include/signal.inl (raise): Use if/else rather than switch to avoid GCC 3.2 bug.
author jlarmour
date Thu, 13 Feb 2003 00:03:00 +0000
parents a4f75ab7f357
children b8ceb56c280d
files packages/language/c/libc/signals/current/ChangeLog packages/language/c/libc/signals/current/include/signal.inl
diffstat 2 files changed, 8 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/packages/language/c/libc/signals/current/ChangeLog
+++ b/packages/language/c/libc/signals/current/ChangeLog
@@ -1,3 +1,8 @@
+2003-02-13  Jonathan Larmour  <jifl@eCosCentric.com>
+
+	* include/signal.inl (raise): Use if/else rather than switch to
+	avoid GCC 3.2 bug.
+
 2002-05-23  Jesper Skov  <jskov@redhat.com>
 
 	* cdl/signals.cdl: Don't build signal2 test when it'll N/A
--- a/packages/language/c/libc/signals/current/include/signal.inl
+++ b/packages/language/c/libc/signals/current/include/signal.inl
@@ -233,23 +233,16 @@ raise(int __sig)
 
     __sigfun = cyg_libc_signal_handlers[__sig];
 
-    switch ( (CYG_ADDRESS)__sigfun ) {
-        
-    case (CYG_ADDRESS)SIG_DFL:
+    if ( __sigfun == SIG_DFL {
         CYG_TRACE0(cyg_libc_signals_raise_trace_level,
                    "signal handler returned is SIG_DFL");
         cyg_libc_signals_unlock();
         cyg_libc_signals_default_handler(__sig);
-        break;
-
-    case (CYG_ADDRESS)SIG_IGN:
+    } else if ( __sigfun == SIG_IGN ) {
         CYG_TRACE0(cyg_libc_signals_raise_trace_level,
                    "signal handler returned is SIG_IGN");
         cyg_libc_signals_unlock();
-
-        break;
-
-    default:
+    } else {
         CYG_TRACE1(cyg_libc_signals_raise_trace_level,
                    "signal handler returned is at %08x", __sigfun);
         // call the signal handler directly
@@ -259,7 +252,6 @@ raise(int __sig)
         CYG_CHECK_FUNC_PTR( __sigfun, "returned signal handler invalid!");
 
         (*__sigfun)(__sig);
-        break;
     }
 
     CYG_REPORT_RETVAL( __ret );