changeset 17998:f82fd6854dbf

use gnulib sigemptyset and sigaddset in thread_manager class * thread-manager.cc (block_or_unblock_signal): Use gnulib sigemptyset and sigaddset functions.
author John W. Eaton <jwe@octave.org>
date Sun, 24 Nov 2013 20:54:46 -0500
parents 8dd427538147
children 4b13b52ba384
files libgui/src/thread-manager.cc
diffstat 1 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/thread-manager.cc	Sun Nov 24 22:06:20 2013 +0100
+++ b/libgui/src/thread-manager.cc	Sun Nov 24 20:54:46 2013 -0500
@@ -87,6 +87,18 @@
   : rep (octave_thread_manager::create_rep ())
 { }
 
+// The following is a workaround for an apparent bug in GCC 4.1.2 and
+// possibly earlier versions.  See Octave bug report #30685 for details.
+#if defined (__GNUC__)
+# if ! (__GNUC__ > 4 \
+        || (__GNUC__ == 4 && (__GNUC_MINOR__ > 1 \
+                              || (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ > 2))))
+#  undef GNULIB_NAMESPACE
+#  define GNULIB_NAMESPACE
+#  warning "disabling GNULIB_NAMESPACE for signal functions -- consider upgrading to a current version of GCC"
+# endif
+#endif
+
 static void
 block_or_unblock_signal (int how, int sig)
 {
@@ -100,9 +112,9 @@
 
   sigset_t signal_mask;
 
-  sigemptyset (&signal_mask);
+  GNULIB_NAMESPACE::sigemptyset (&signal_mask);
 
-  sigaddset (&signal_mask, sig);
+  GNULIB_NAMESPACE::sigaddset (&signal_mask, sig);
 
   pthread_sigmask (how, &signal_mask, 0);
 #endif