commit f79e2f09534d92a6fe4e062b06449a925fef1c41
Author:     Vasily Kolobkov <[email protected]>
AuthorDate: Sun Feb 14 13:07:17 2016 +0200
Commit:     Nico Golde <[email protected]>
CommitDate: Wed Feb 24 23:02:19 2016 +0100

    Fix channel use after freeing in main loop
    
    Signed-off-by: Nico Golde <[email protected]>

diff --git a/ii.c b/ii.c
index 632ee4b..745e29a 100644
--- a/ii.c
+++ b/ii.c
@@ -418,7 +418,7 @@ static void handle_server_output() {
 }
 
 static void run() {
-       Channel *c;
+       Channel *c, *n;
        int r, maxfd;
        fd_set rd;
        struct timeval tv;
@@ -455,9 +455,11 @@ static void run() {
                        handle_server_output();
                        last_response = time(NULL);
                }
-               for(c = channels; c; c = c->next)
+               for(c = channels; c; c = n) {
+                       n = c->next;
                        if(FD_ISSET(c->fd, &rd))
                                handle_channels_input(c);
+               }
        }
 }
 

Reply via email to