]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
eloop: fix a memory leak when clearing events
authorRoy Marples <roy@marples.name>
Fri, 29 Jan 2021 06:48:17 +0000 (06:48 +0000)
committerRoy Marples <roy@marples.name>
Fri, 29 Jan 2021 06:53:12 +0000 (06:53 +0000)
src/eloop.c

index 33177667dd312587c02420c7a272269268aee500..834af9683b8b29f3f0a53be3e9a907196c718c1e 100644 (file)
@@ -953,13 +953,14 @@ eloop_clear(struct eloop *eloop, ...)
                if (e->fd == except_fd && e->fd != -1)
                        continue;
                TAILQ_REMOVE(&eloop->events, e, next);
-               if (e->fd != -1)
+               if (e->fd != -1) {
                        close(e->fd);
+                       eloop->nevents--;
+               }
                free(e);
-               eloop->nevents--;
        }
        va_end(va1);
-       if (eloop->nevents == 0) {
+       if (TAILQ_FIRST(&eloop->events) == NULL) {
                free(eloop->fds);
                eloop->fds = NULL;
                eloop->nfds = 0;