wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 4beaed1b0e6259e41b7966460afecc874b0a76b3
parent f0356de610ab5793c27f1f43f6f507138dd00a04
Author: Kris Maglione <bsdaemon@wmii.de>
Date:   Thu,  8 Jun 2006 16:44:23 -0400

Fixed some linked list issues


Diffstat:
libixp/server.c | 29++++++++++++++---------------
1 file changed, 14 insertions(+), 15 deletions(-)

diff --git a/libixp/server.c b/libixp/server.c @@ -52,27 +52,24 @@ ixp_server_close_conn(IXPConn *c) static void prepare_select(IXPServer *s) { - IXPConn *c; + IXPConn **c; FD_ZERO(&s->rd); - for(c=s->conn; c; c=c->next) { - if(s->maxfd < c->fd) - s->maxfd = c->fd; - if(c->read) - FD_SET(c->fd, &s->rd); + for(c=&s->conn; *c; *c && (c=&(*c)->next)) { + if(s->maxfd < (*c)->fd) + s->maxfd = (*c)->fd; + if((*c)->read) + FD_SET((*c)->fd, &s->rd); } } static void handle_conns(IXPServer *s) { - IXPConn *c = s->conn, *n; - while(c) { - n = c->next; - if(FD_ISSET(c->fd, &s->rd) && c->read) + IXPConn **c; + for(c=&s->conn; *c; *c && (c=&(*c)->next)) + if(FD_ISSET((*c)->fd, &s->rd) && (*c)->read) /* call read handler */ - c->read(c); - c = n; - } + (*c)->read(*c); } char * @@ -148,8 +145,10 @@ ixp_server_respond_error(IXPConn *c, Fcall *fcall, char *errstr) void ixp_server_close(IXPServer *s) { - IXPConn *c; - for(c=s->conn; c; c=c->next) + IXPConn *c, *next; + for(c=s->conn; c; c=next) { + next=c->next; if(c->close) c->close(c); + } }