Mercurial > pidgin
comparison src/protocols/oscar/locate.c @ 7046:4003419d753b
[gaim-migrate @ 7609]
I found my memleak and I made server-stored buddy icons from other people
work again (both problems started with my away changes from this morning).
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Tue, 30 Sep 2003 01:50:39 +0000 |
parents | 237ad253dd34 |
children | 7b31e3e22f59 |
comparison
equal
deleted
inserted
replaced
7045:237ad253dd34 | 7046:4003419d753b |
---|---|
207 cur->sessionlen = userinfo->sessionlen; | 207 cur->sessionlen = userinfo->sessionlen; |
208 if (userinfo->capabilities != 0) | 208 if (userinfo->capabilities != 0) |
209 cur->capabilities = userinfo->capabilities; | 209 cur->capabilities = userinfo->capabilities; |
210 cur->present |= userinfo->present; | 210 cur->present |= userinfo->present; |
211 | 211 |
212 if (userinfo->iconcsumlen > 0) { | |
213 free(cur->iconcsum); | |
214 cur->iconcsum = (fu8_t *)malloc(userinfo->iconcsumlen); | |
215 memcpy(cur->iconcsum, userinfo->iconcsum, userinfo->iconcsumlen); | |
216 cur->iconcsumlen = userinfo->iconcsumlen; | |
217 } | |
218 | |
219 if ((userinfo->info != NULL) && (userinfo->info_len > 0)) { | |
220 free(cur->info); | |
221 free(cur->info_encoding); | |
222 cur->info = (char *)malloc(userinfo->info_len); | |
223 memcpy(cur->info, userinfo->info, userinfo->info_len); | |
224 cur->info_encoding = strdup(userinfo->info_encoding); /* XXX - This seems to leak occasionally */ | |
225 cur->info_len = userinfo->info_len; | |
226 } | |
227 | |
212 if ((userinfo->away != NULL) && (userinfo->away_len > 0)) { | 228 if ((userinfo->away != NULL) && (userinfo->away_len > 0)) { |
213 free(cur->away); | 229 free(cur->away); |
214 free(cur->away_encoding); | 230 free(cur->away_encoding); |
215 cur->away = (char *)malloc(userinfo->away_len); | 231 cur->away = (char *)malloc(userinfo->away_len); |
216 memcpy(cur->away, userinfo->away, userinfo->away_len); | 232 memcpy(cur->away, userinfo->away, userinfo->away_len); |
217 cur->away_encoding = strdup(userinfo->away_encoding); /* XXX - This seems to leak occasionally */ | 233 cur->away_encoding = strdup(userinfo->away_encoding); /* XXX - This seems to leak occasionally */ |
218 cur->away_len = userinfo->away_len; | 234 cur->away_len = userinfo->away_len; |
219 } | |
220 | |
221 if ((userinfo->info != NULL) && (userinfo->info_len > 0)) { | |
222 free(cur->info); | |
223 free(cur->info_encoding); | |
224 cur->info = (char *)malloc(userinfo->info_len); | |
225 memcpy(cur->info, userinfo->info, userinfo->info_len); | |
226 cur->info_encoding = strdup(userinfo->info_encoding); /* XXX - This seems to leak occasionally */ | |
227 cur->info_len = userinfo->info_len; | |
228 } | 235 } |
229 } | 236 } |
230 | 237 |
231 static void aim_locate_dorequest(aim_session_t *sess) { | 238 static void aim_locate_dorequest(aim_session_t *sess) { |
232 struct userinfo_node *cur = sess->locate.request_queue; | 239 struct userinfo_node *cur = sess->locate.request_queue; |
1131 aim_userinfo_t *del; | 1138 aim_userinfo_t *del; |
1132 | 1139 |
1133 while (sess->locate.userinfo) { | 1140 while (sess->locate.userinfo) { |
1134 del = sess->locate.userinfo; | 1141 del = sess->locate.userinfo; |
1135 sess->locate.userinfo = sess->locate.userinfo->next; | 1142 sess->locate.userinfo = sess->locate.userinfo->next; |
1136 free(del->sn); | 1143 aim_info_free(del); |
1137 free(del->info); | |
1138 free(del->avail); | |
1139 free(del->away); | |
1140 free(del); | 1144 free(del); |
1141 } | 1145 } |
1142 } | 1146 } |
1143 | 1147 |
1144 faim_internal int locate_modfirst(aim_session_t *sess, aim_module_t *mod) | 1148 faim_internal int locate_modfirst(aim_session_t *sess, aim_module_t *mod) |