--- a/src/protocols/oscar/snac.c Wed Feb 26 03:39:07 2003 +0000 +++ b/src/protocols/oscar/snac.c Wed Feb 26 05:01:37 2003 +0000 @@ -90,9 +90,8 @@ if (cur->id == id) { *prev = cur->next; if (cur->flags & AIM_SNACFLAGS_DESTRUCTOR) { - struct aim_snac_destructor *asd = cur->data; - cur->data = asd->data; - free(asd); + free(cur->data); + cur->data = NULL; } return cur; } else @@ -102,40 +101,6 @@ return cur; } -/* Free a SNAC, and call the appropriate destructor if necessary. - */ -faim_internal faim_shortfunc void aim_cleansnac(aim_session_t *sess, aim_snac_t *snac) -{ - aim_module_t *cur; - - if (snac->flags & AIM_SNACFLAGS_DESTRUCTOR) { - struct aim_snac_destructor *d = snac->data; - aim_modsnac_t modsnac; - - modsnac.id = snac->id; - modsnac.subtype = snac->type; - modsnac.family = snac->family; - modsnac.flags = snac->flags; - - for (cur = (aim_module_t *)sess->modlistv; cur; cur = cur->next) - { - if (!cur->snacdestructor) - continue; - if (!(cur->flags & AIM_MODFLAG_MULTIFAMILY) && - (cur->family != modsnac.family)) - continue; - if (cur->snacdestructor(sess, d->conn, &modsnac, - d->data)) - break; - } - free(d->data); - } - - free(snac->data); - free(snac); -} - - /* * This is for cleaning up old SNACs that either don't get replies or * a reply was never received for. Garabage collection. Plain and simple. @@ -161,7 +126,8 @@ *prev = cur->next; - aim_cleansnac(sess, cur); + free(cur->data); + free(cur); } else prev = &cur->next; }