]> granicus.if.org Git - gc/commitdiff
2005-05-02 Miguel de Icaza <miguel@novell.com>
authorMiguel de Icaza <miguel@gnome.org>
Mon, 2 May 2005 22:41:21 +0000 (22:41 +0000)
committerguest <ivmai@mail.ru>
Fri, 29 Jul 2011 11:25:00 +0000 (15:25 +0400)
* pthread_stop_world.c (GC_restart_handler, GC_suspend_handler):
Wrap the original routines into methods that preserve the value of
errno.  Fixes #74740

svn path=/trunk/mono/; revision=43905

ChangeLog
pthread_stop_world.c

index 600fa55ac4a1c22a8af13835a76680f741363b7b..62c2c78e8b65ccd94e50e3663c4894300ed7c0b3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-05-02  Miguel de Icaza  <miguel@novell.com>
+
+       * pthread_stop_world.c (GC_restart_handler, GC_suspend_handler):
+       Wrap the original routines into methods that preserve the value of
+       errno.  Fixes #74740
+
 2005-04-18  Zoltan Varga  <vargaz@freemail.hu>
 
        * configure.in: Applied another freebsd patch from Bill Middleton (flashdict@gmail.com).
index 06e919b28482d8d464eebe7d833af7d583134c7c..60a63d5d8ac0b75b3dda3a158cd9ba2ca292d4ca 100644 (file)
@@ -101,7 +101,7 @@ word GC_stop_count; /* Incremented at the beginning of GC_stop_world. */
 
 sem_t GC_suspend_ack_sem;
 
-void GC_suspend_handler(int sig)
+static void _GC_suspend_handler(int sig)
 {
     int dummy;
     pthread_t my_thread = pthread_self();
@@ -168,7 +168,14 @@ void GC_suspend_handler(int sig)
 #endif
 }
 
-void GC_restart_handler(int sig)
+void GC_suspend_handler(int sig)
+{
+       int old_errno = errno;
+       _GC_suspend_handler(sig);
+       errno = old_errno;
+}
+
+static void _GC_restart_handler(int sig)
 {
     pthread_t my_thread = pthread_self();
     GC_thread me;
@@ -270,6 +277,13 @@ static void pthread_push_all_stacks()
       ABORT("Collecting from unknown thread.");
 }
 
+void GC_restart_handler(int sig)
+{
+       int old_errno = errno;
+       _GC_restart_handler (sig);
+       errno = old_errno;
+}
+
 /* We hold allocation lock.  Should do exactly the right thing if the  */
 /* world is stopped.  Should not fail if it isn't.                     */
 void GC_push_all_stacks()