diff -Nru libnbio-0.30.orig/src/libnbio.c libnbio-0.30/src/libnbio.c --- libnbio-0.30.orig/src/libnbio.c 2007-08-26 10:08:36.000000000 +0300 +++ libnbio-0.30/src/libnbio.c 2007-08-26 10:05:06.000000000 +0300 @@ -532,20 +532,21 @@ /* Do all cleanups that are normally done in nbio_poll */ int nbio_cleanuponly(nbio_t *nb) { - nbio_fd_t *cur = NULL, **prev = NULL; + nbio_fd_t *cur = (nbio_fd_t *)nb->fdlist; - for (prev = (nbio_fd_t **)&nb->fdlist; (cur = *prev); ) { + while (cur) { if (cur->flags & NBIO_FDT_FLAG_CLOSED) { - *prev = cur->next; - __fdt_free(cur); + nbio_fd_t *prev = cur; + cur = cur->next; + __fdt_free(prev); continue; } if ((cur->flags & NBIO_FDT_FLAG_CLOSEONFLUSH) && !cur->txchain) cur->handler(nb, NBIO_EVENT_EOF, cur); - prev = &cur->next; + cur = cur->next; } return 0; diff -Nru libnbio-0.30.orig/src/poll.c libnbio-0.30/src/poll.c --- libnbio-0.30.orig/src/poll.c 2007-08-26 10:08:36.000000000 +0300 +++ libnbio-0.30/src/poll.c 2007-08-26 10:05:06.000000000 +0300 @@ -227,19 +227,20 @@ } for (curpri = nb->maxpri; curpri >= 0; curpri--) { - nbio_fd_t *cur = NULL, **prev = NULL; + nbio_fd_t *cur = (nbio_fd_t *)nb->fdlist; - for (prev = (nbio_fd_t **)&nb->fdlist; (cur = *prev); ) { + while (cur) { struct pollfd *pfd; if (cur->flags & NBIO_FDT_FLAG_CLOSED) { - *prev = cur->next; - __fdt_free(cur); + nbio_fd_t *prev = cur; + cur = cur->next; + __fdt_free(prev); continue; } if (cur->pri != curpri) { - prev = &cur->next; + cur = cur->next; continue; } @@ -269,7 +270,7 @@ if (__fdt_ready_all(nb, cur) == -1) return -1; - prev = &cur->next; + cur = cur->next; } } diff -Nru libnbio-0.30.orig/src/resolv.c libnbio-0.30/src/resolv.c --- libnbio-0.30.orig/src/resolv.c 2005-08-31 07:00:06.000000000 +0300 +++ libnbio-0.30/src/resolv.c 2007-08-26 10:08:22.000000000 +0300 @@ -386,5 +386,6 @@ */ int nbio_resolv__looppass(nbio_t *nb) { + return -1; }