]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
htl: Simplify non-cancel path of __pthread_cond_timedwait_internal
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Tue, 23 Jun 2020 22:41:18 +0000 (22:41 +0000)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Tue, 23 Jun 2020 23:19:48 +0000 (01:19 +0200)
Since __pthread_exit does not return, we do not need to indent the
noncancel path

* sysdeps/htl/pt-cond-timedwait.c (__pthread_cond_timedwait_internal):
Move cancelled path before non-cancelled path, to avoid "else"
indentation.

sysdeps/htl/pt-cond-timedwait.c

index c05944d16db77c60aee77b32053665a0d234071f..f7801b30ae284d7de5b80deef0982f7d1d4f2734 100644 (file)
@@ -117,29 +117,30 @@ __pthread_cond_timedwait_internal (pthread_cond_t *cond,
   cancelled = (self->cancel_state == PTHREAD_CANCEL_ENABLE)
       && self->cancel_pending;
 
-  if (!cancelled)
+  if (cancelled)
     {
-      self->cancel_hook = cancel_hook;
-      self->cancel_hook_arg = &ctx;
-      oldtype = self->cancel_type;
-
-      if (oldtype != PTHREAD_CANCEL_DEFERRED)
-       self->cancel_type = PTHREAD_CANCEL_DEFERRED;
-
-      /* Add ourselves to the list of waiters.  This is done while setting
-         the cancellation hook to simplify the cancellation procedure, i.e.
-         if the thread is queued, it can be cancelled, otherwise it is
-         already unblocked, progressing on the return path.  */
-      __pthread_spin_wait (&cond->__lock);
-      __pthread_enqueue (&cond->__queue, self);
-      if (cond->__attr != NULL && clockid == -1)
-       clock_id = cond->__attr->__clock;
-      __pthread_spin_unlock (&cond->__lock);
+      __pthread_mutex_unlock (&self->cancel_lock);
+      __pthread_exit (PTHREAD_CANCELED);
     }
-  __pthread_mutex_unlock (&self->cancel_lock);
 
-  if (cancelled)
-    __pthread_exit (PTHREAD_CANCELED);
+  self->cancel_hook = cancel_hook;
+  self->cancel_hook_arg = &ctx;
+  oldtype = self->cancel_type;
+
+  if (oldtype != PTHREAD_CANCEL_DEFERRED)
+    self->cancel_type = PTHREAD_CANCEL_DEFERRED;
+
+  /* Add ourselves to the list of waiters.  This is done while setting
+     the cancellation hook to simplify the cancellation procedure, i.e.
+     if the thread is queued, it can be cancelled, otherwise it is
+     already unblocked, progressing on the return path.  */
+  __pthread_spin_wait (&cond->__lock);
+  __pthread_enqueue (&cond->__queue, self);
+  if (cond->__attr != NULL && clockid == -1)
+    clock_id = cond->__attr->__clock;
+  __pthread_spin_unlock (&cond->__lock);
+
+  __pthread_mutex_unlock (&self->cancel_lock);
 
   /* Release MUTEX before blocking.  */
   __pthread_mutex_unlock (mutex);