Changeset 862371b for libfaim/snac.c
- Timestamp:
- Jun 29, 2003, 1:47:04 PM (22 years ago)
- Branches:
- master, barnowl_perlaim, debian, owl, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- e016fc2
- Parents:
- 03ad7b2
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libfaim/snac.c
r5e53c4a r862371b 90 90 if (cur->id == id) { 91 91 *prev = cur->next; 92 if (cur->flags & AIM_SNACFLAGS_DESTRUCTOR) { 93 struct aim_snac_destructor *asd = cur->data; 94 cur->data = asd->data; 95 free(asd); 96 } 92 97 return cur; 93 98 } else … … 97 102 return cur; 98 103 } 104 105 /* Free a SNAC, and call the appropriate destructor if necessary. 106 */ 107 faim_internal faim_shortfunc void aim_cleansnac(aim_session_t *sess, aim_snac_t *snac) 108 { 109 aim_module_t *cur; 110 111 if (snac->flags & AIM_SNACFLAGS_DESTRUCTOR) { 112 struct aim_snac_destructor *d = snac->data; 113 aim_modsnac_t modsnac; 114 115 modsnac.id = snac->id; 116 modsnac.subtype = snac->type; 117 modsnac.family = snac->family; 118 modsnac.flags = snac->flags; 119 120 for (cur = (aim_module_t *)sess->modlistv; cur; cur = cur->next) 121 { 122 if (!cur->snacdestructor) 123 continue; 124 if (!(cur->flags & AIM_MODFLAG_MULTIFAMILY) && 125 (cur->family != modsnac.family)) 126 continue; 127 if (cur->snacdestructor(sess, d->conn, &modsnac, 128 d->data)) 129 break; 130 } 131 free(d->data); 132 } 133 134 free(snac->data); 135 free(snac); 136 } 137 99 138 100 139 /* … … 123 162 *prev = cur->next; 124 163 125 /* XXX should we have destructors here? */ 126 free(cur->data); 127 free(cur); 128 164 aim_cleansnac(sess, cur); 129 165 } else 130 166 prev = &cur->next;
Note: See TracChangeset
for help on using the changeset viewer.