ii

git clone https://orangeshoelaces.net/git/ii.git

f79e2f09534d92a6fe4e062b06449a925fef1c41

Author: Vasily Kolobkov on 02/14/2016

Committer: Nico Golde on 02/24/2016

Fix channel use after freeing in main loop

Signed-off-by: Nico Golde <nico@ngolde.de>

Stats

ii.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

Patch

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);
+		}
 	}
 }