io: don't leak memory on clean shutdown.
[ccan] / ccan / io / poll.c
index 95b6103287d6335b0b84e4475a7b8469a2d33b54..a02152e3792ae07569d4a75b1ca423ecce5fb626 100644 (file)
@@ -137,6 +137,12 @@ static void remove_from_always(const struct io_plan *plan)
        if (pos != num_always-1)
                always[pos] = always[num_always-1];
        num_always--;
+
+       /* Only free if no fds left either. */
+       if (num_always == 0 && max_fds == 0) {
+               tal_free(always);
+               max_always = 0;
+       }
 }
 
 bool backend_new_always(struct io_plan *plan)