diff options
| author | Sander Vrijders <sander.vrijders@ugent.be> | 2017-03-26 16:04:54 +0000 | 
|---|---|---|
| committer | dimitri staessens <dimitri.staessens@ugent.be> | 2017-03-26 16:04:54 +0000 | 
| commit | 7ee6dadd39f3d4b5874d23bfcdcdd66eb195124e (patch) | |
| tree | 43abd2084831d5a36c88a8ad93b3dec3e48127cd /src/lib | |
| parent | 0a75074b15f66a60496d196c0759d33afa3c8b18 (diff) | |
| parent | 572013b92d82e78ef5e5b19d79316ae3131c71af (diff) | |
| download | ouroboros-7ee6dadd39f3d4b5874d23bfcdcdd66eb195124e.tar.gz ouroboros-7ee6dadd39f3d4b5874d23bfcdcdd66eb195124e.zip | |
Merged in sandervrijders/ouroboros/be-pointer (pull request #425)
ipcpd: normal: Fix compilation issue
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/rib.c | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/src/lib/rib.c b/src/lib/rib.c index 8468e88c..fc58f266 100644 --- a/src/lib/rib.c +++ b/src/lib/rib.c @@ -177,6 +177,8 @@ static struct revent * revent_dup(struct revent * ev)          re->flags = ev->flags; +        list_head_init(&re->next); +          return re;  } @@ -196,7 +198,13 @@ static void rnode_notify_subs(struct rnode *  node,                  struct rn_sub * s = list_entry(p, struct rn_sub, next);                  if (s->flags & ev->flags) {                          struct revent * e = revent_dup(ev); +                        if (e == NULL) +                                continue; + +                        pthread_mutex_lock(&s->sub->lock);                          list_add_tail(&e->next, &s->sub->events); +                        pthread_cond_signal(&s->sub->cond); +                        pthread_mutex_unlock(&s->sub->lock);                  }                  if (ev->flags & RO_DELETE) @@ -1130,7 +1138,7 @@ int rib_event_wait(ro_set_t *              set,          while (list_is_empty(&sub->events) && ret != -ETIMEDOUT) {                  if (timeout != NULL) -                        ret = -pthread_cond_timedwait(&sub->cond , +                        ret = -pthread_cond_timedwait(&sub->cond,                                                        &sub->lock,                                                        &abstime);                  else | 
