diff options
| -rw-r--r-- | src/lib/notifier.c | 5 | 
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/notifier.c b/src/lib/notifier.c index 593a0e70..4f77f2e3 100644 --- a/src/lib/notifier.c +++ b/src/lib/notifier.c @@ -75,12 +75,15 @@ void notifier_event(int          event,          pthread_rwlock_rdlock(¬ifier.lock); +        pthread_cleanup_push((void (*) (void *)) pthread_rwlock_unlock, +                             (void *) ¬ifier.lock) +          list_for_each(p, ¬ifier.listeners) {                  struct listener * l = list_entry(p, struct listener, next);                  l->callback(l->obj, event, o);          } -        pthread_rwlock_unlock(¬ifier.lock); +        pthread_cleanup_pop(true);  }  int notifier_reg(notifier_fn_t callback,  | 
