--- a/src/protocols/oscar/conn.c Mon Nov 05 11:33:50 2001 +0000 +++ b/src/protocols/oscar/conn.c Mon Nov 05 12:25:22 2001 +0000 @@ -104,10 +104,11 @@ return NULL; } -static struct snacgroup *connkill_snacgroups(struct snacgroup *sg) +static void connkill_snacgroups(struct snacgroup **head) { + struct snacgroup *sg; - while (sg) { + for (sg = *head; sg; ) { struct snacgroup *tmp; tmp = sg->next; @@ -115,7 +116,26 @@ sg = tmp; } - return NULL; + *head = NULL; + + return; +} + +static void connkill_rates(struct rateclass **head) +{ + struct rateclass *rc; + + for (rc = *head; rc; ) { + struct rateclass *tmp; + + tmp = rc->next; + free(rc); + rc = tmp; + } + + *head = NULL; + + return; } static void connkill_real(aim_session_t *sess, aim_conn_t **deadconn) @@ -144,7 +164,8 @@ if ((*deadconn)->inside) { aim_conn_inside_t *inside = (aim_conn_inside_t *)(*deadconn)->inside; - inside->groups = connkill_snacgroups(inside->groups); + connkill_snacgroups(&inside->groups); + connkill_rates(&inside->rates); free(inside); }