Add discover server options
[petitboot] / lib / waiter / waiter.c
index 21dd4a589650d207b65441e05b61a0aaf8255aa2..68f483acac03adaea7955cf91dd1fc2f2197a75a 100644 (file)
@@ -43,7 +43,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);
 }
@@ -54,9 +55,10 @@ int waiter_poll(void)
        static int n_pollfds;
        int i, rc;
 
-       if (n_waiters > n_pollfds) {
+       if (n_waiters != n_pollfds) {
                pollfds = talloc_realloc(NULL, pollfds,
                                struct pollfd, n_waiters);
+               n_pollfds = n_waiters;
        }
 
        for (i = 0; i < n_waiters; i++) {