Ver código fonte

Fix reported bug in error return behavior of sem_timedwait().

Manuel Novoa III 19 anos atrás
pai
commit
702cfb3363
1 arquivos alterados com 4 adições e 2 exclusões
  1. 4 2
      libpthread/linuxthreads/semaphore.c

+ 4 - 2
libpthread/linuxthreads/semaphore.c

@@ -226,7 +226,8 @@ int sem_timedwait(sem_t *sem, const struct timespec *abstime)
     /* The standard requires that if the function would block and the
        time value is illegal, the function returns with an error.  */
     __pthread_unlock(&sem->__sem_lock);
-    return EINVAL;
+    __set_errno (EINVAL);
+    return -1;
   }
 
   /* Set up extrication interface */
@@ -264,7 +265,8 @@ int sem_timedwait(sem_t *sem, const struct timespec *abstime)
 
 	if (was_on_queue) {
 	  __pthread_set_own_extricate_if(self, 0);
-	  return ETIMEDOUT;
+	  __set_errno (ETIMEDOUT);
+	  return -1;
 	}
 
 	/* Eat the outstanding restart() from the signaller */