io: fix another leak path for always array.
[ccan] / ccan / io / poll.c
index a02152e3792ae07569d4a75b1ca423ecce5fb626..17f9384587d92e39b37e199b0f05159bb899d112 100644 (file)
@@ -91,6 +91,10 @@ static void del_fd(struct fd *fd)
                pollfds = tal_free(pollfds);
                fds = NULL;
                max_fds = 0;
+               if (num_always == 0) {
+                       always = tal_free(always);
+                       max_always = 0;
+               }
        }
        num_fds--;
        fd->backend_info = -1;
@@ -140,7 +144,7 @@ static void remove_from_always(const struct io_plan *plan)
 
        /* Only free if no fds left either. */
        if (num_always == 0 && max_fds == 0) {
-               tal_free(always);
+               always = tal_free(always);
                max_always = 0;
        }
 }