X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=lib%2Fwaiter%2Fwaiter.c;h=0bb213cce2840b5ce82c2bab19db9cb8105e8a8e;hb=52b9db95764fcdee9195113d7df225634a19c9f4;hp=214dfda0b4786d7d42293e7ff25c406c7528814a;hpb=6106bb6672af26232546c07a4b631779f21dbbb0;p=petitboot diff --git a/lib/waiter/waiter.c b/lib/waiter/waiter.c index 214dfda..0bb213c 100644 --- a/lib/waiter/waiter.c +++ b/lib/waiter/waiter.c @@ -25,6 +25,10 @@ struct waiter *waiter_register(int fd, int events, n_waiters++; waiters = talloc_realloc(NULL, waiters, struct waiter, n_waiters); + + if(!waiters) + return NULL; + waiter = &waiters[n_waiters - 1]; waiter->fd = fd; @@ -32,7 +36,7 @@ struct waiter *waiter_register(int fd, int events, waiter->callback = callback; waiter->arg = arg; - return 0; + return waiter; } void waiter_remove(struct waiter *waiter) @@ -43,7 +47,8 @@ void waiter_remove(struct waiter *waiter) assert(i >= 0 && i < n_waiters); n_waiters--; - memmove(&waiters[i], &waiters[i+1], n_waiters - i); + memmove(&waiters[i], &waiters[i+1], + (n_waiters - i) * sizeof(waiters[0])); waiters = talloc_realloc(NULL, waiters, struct waiter, n_waiters); }