Commit f8f5ea10 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

r12191@catbus: nickm | 2007-03-15 15:33:37 -0400

 Check return values from pthread_mutex functions.


svn:r9862
parent 194e0ae1
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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
+24 −4
Original line number Diff line number Diff line
@@ -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. */