Fixed deallocation of a mutex in thr-single.c (patch from Chris Ball <cball@fmco...
authorChris Ball <cball@fmco.com>
Wed, 29 Sep 1999 00:37:49 +0000 (00:37 +0000)
committerOvidiu Predescu <ovidiu@gcc.gnu.org>
Wed, 29 Sep 1999 00:37:49 +0000 (00:37 +0000)
From-SVN: r29701

libobjc/ChangeLog
libobjc/thr-posix.c

index b292188..8ded893 100644 (file)
@@ -1,3 +1,7 @@
+Thu Sep 23 07:19:12 1999   Chris Ball <cball@fmco.com>
+
+       * thr-posix.c (__objc_mutex_deallocate): made deallocate work.
+
 Tue Sep 21 07:47:10 1999  Jeffrey A Law  (law@cygnus.com)
 
        * Makefile.in (gc.o, gc_gc.o): Do not pass -fgnu-runtime to
index 5b40f71..a73c627 100644 (file)
@@ -145,6 +145,20 @@ __objc_mutex_allocate(objc_mutex_t mutex)
 int
 __objc_mutex_deallocate(objc_mutex_t mutex)
 {
+  int count = 1;
+
+  /*
+   * Posix Threads specifically require that the thread be unlocked for
+   * pthread_mutex_destroy to work.
+   */
+
+  while ( count )
+    {
+      if (( count = pthread_mutex_unlock((pthread_mutex_t *)mutex->backend))
+          < 0 )
+        return -1;
+    }
+
   if (pthread_mutex_destroy((pthread_mutex_t *)mutex->backend))
     return -1;