OSDN Git Service

2011-04-02 Jon TURNEY <jon.turney@dronecode.org.uk>
authorjturney <jturney>
Tue, 19 Apr 2011 18:51:20 +0000 (18:51 +0000)
committerjturney <jturney>
Tue, 19 Apr 2011 18:51:20 +0000 (18:51 +0000)
        * thread.cc (semaphore::init): We cannot reliably infer anything from
        the existing contents of sem, so merely warn rather than return EBUSY
        if it looks like we are reinitialising a semaphore.

winsup/cygwin/ChangeLog
winsup/cygwin/thread.cc

index a97051a..fe817b4 100644 (file)
@@ -1,3 +1,9 @@
+2011-04-02  Jon TURNEY  <jon.turney@dronecode.org.uk>
+
+        * thread.cc (semaphore::init): We cannot reliably infer anything from
+        the existing contents of sem, so merely warn rather than return EBUSY
+        if it looks like we are reinitialising a semaphore.
+
 2011-04-19  Corinna Vinschen  <corinna@vinschen.de>
 
        * autoload.cc (GetConsoleWindow): Drop.
index 87167b7..2bd5065 100644 (file)
@@ -3209,11 +3209,14 @@ semaphore::_terminate ()
 int
 semaphore::init (sem_t *sem, int pshared, unsigned int value)
 {
-  /* opengroup calls this undefined */
+  /*
+     We can't tell the difference between reinitialising an
+     existing semaphore and initialising a semaphore who's
+     contents happen to be a valid pointer
+   */
   if (is_good_object (sem))
     {
-      set_errno(EBUSY);
-      return -1;
+      paranoid_printf ("potential attempt to reinitialise a semaphore");
     }
 
   if (value > SEM_VALUE_MAX)