]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
r12191@catbus: nickm | 2007-03-15 15:33:37 -0400
authorNick Mathewson <nickm@torproject.org>
Sat, 17 Mar 2007 21:09:49 +0000 (21:09 +0000)
committerNick Mathewson <nickm@torproject.org>
Sat, 17 Mar 2007 21:09:49 +0000 (21:09 +0000)
 Check return values from pthread_mutex functions.

svn:r9862

ChangeLog
src/common/compat.c

index f748720a5e25df0a4b32d60cde432c1fbea2b945..bdadfa504f5e2f5954e0d2a6ed97d15fc75da728 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -38,8 +38,9 @@ Changes in version 0.2.0.1-alpha - 2007-??-??
       try to use \ consistently on windows and / consistently on unix: it
       makes the log messages nicer.
 
-  o Minor bugfixes:
+  o Minor bugfixes (other):
     - Stop allowing hibernating servers to be "stable" or "fast".
+    - Check return values from pthread_mutex functions. 
 
   o Minor bugfixes (controller), reported by daejees:
     - Make 'getinfo fingerprint' return a 551 error if we're not a
index a60d45a92db822ea696ad856c39308bfa15260b5..f15bb1fd38b6043120fc99485be3b6b0979a244e 100644 (file)
@@ -1248,30 +1248,50 @@ struct tor_mutex_t {
 tor_mutex_t *
 tor_mutex_new(void)
 {
+  int err;
   tor_mutex_t *mutex = tor_malloc_zero(sizeof(tor_mutex_t));
-  pthread_mutex_init(&mutex->mutex, NULL);
+  err = pthread_mutex_init(&mutex->mutex, NULL);
+  if (PREDICT_UNLIKELY(err)) {
+    log_err(LD_GENERAL, "Error %d creating a mutex.", err);
+    tor_fragile_assert();
+  }
   return mutex;
 }
 /** Wait until <b>m</b> is free, then acquire it. */
 void
 tor_mutex_acquire(tor_mutex_t *m)
 {
+  int err;
   tor_assert(m);
-  pthread_mutex_lock(&m->mutex);
+  err = pthread_mutex_lock(&m->mutex);
+  if (PREDICT_UNLIKELY(err)) {
+    log_err(LD_GENERAL, "Error %d locking a mutex.", err);
+    tor_fragile_assert();
+  }
 }
 /** Release the lock <b>m</b> so another thread can have it. */
 void
 tor_mutex_release(tor_mutex_t *m)
 {
+  int err;
   tor_assert(m);
-  pthread_mutex_unlock(&m->mutex);
+  err = pthread_mutex_unlock(&m->mutex);
+  if (PREDICT_UNLIKELY(err)) {
+    log_err(LD_GENERAL, "Error %d unlocking a mutex.", err);
+    tor_fragile_assert();
+  }
 }
 /** Free all storage held by the lock <b>m</b>. */
 void
 tor_mutex_free(tor_mutex_t *m)
 {
+  int err;
   tor_assert(m);
-  pthread_mutex_destroy(&m->mutex);
+  err = pthread_mutex_destroy(&m->mutex);
+  if (PREDICT_UNLIKELY(err)) {
+    log_err(LD_GENERAL, "Error %d destroying a mutex.", err);
+    tor_fragile_assert();
+  }
   tor_free(m);
 }
 /** Return an integer representing this thread. */