Mercurial > pidgin
diff src/prpl.c @ 12126:35c4797c5c57
[gaim-migrate @ 14426]
SF Patch #1359761, from sadrul
"This patch plugs some memory leaks in a few places
ragarding gaim_find_buddies. It also changes the call
to gaim_find_buddy in a couple of places that only
needs one buddy."
I also fixed a case of g_free()ing a const char * in the sametime prpl.
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Fri, 18 Nov 2005 12:05:40 +0000 |
parents | 1d4fbf553ce2 |
children | 6f41d8d33989 |
line wrap: on
line diff
--- a/src/prpl.c Fri Nov 18 07:23:29 2005 +0000 +++ b/src/prpl.c Fri Nov 18 12:05:40 2005 +0000 @@ -188,40 +188,43 @@ gaim_prpl_got_user_idle(GaimAccount *account, const char *name, gboolean idle, time_t idle_time) { - GSList *l; + GSList *list, *iter; g_return_if_fail(account != NULL); g_return_if_fail(name != NULL); g_return_if_fail(gaim_account_is_connected(account)); - for (l = gaim_find_buddies(account, name); l != NULL; l = l->next) + list = gaim_find_buddies(account, name); + for (iter = list; iter != NULL; iter = iter->next) { GaimBuddy *buddy; GaimPresence *presence; - buddy = (GaimBuddy *)l->data; + buddy = (GaimBuddy *)iter->data; presence = gaim_buddy_get_presence(buddy); gaim_presence_set_idle(presence, idle, idle_time); } + g_slist_free(list); } void gaim_prpl_got_user_login_time(GaimAccount *account, const char *name, time_t login_time) { - GSList *l; + GSList *list, *iter; g_return_if_fail(account != NULL); g_return_if_fail(name != NULL); - for (l = gaim_find_buddies(account, name); l != NULL; l = l->next) + list = gaim_find_buddies(account, name); + for (iter = list; iter != NULL; iter = iter->next) { GaimBuddy *buddy; GaimPresence *presence; - buddy = (GaimBuddy *)l->data; + buddy = (GaimBuddy *)iter->data; if (login_time == 0) login_time = time(NULL); @@ -230,27 +233,29 @@ gaim_presence_set_login_time(presence, login_time); } + g_slist_free(list); } void gaim_prpl_got_user_status(GaimAccount *account, const char *name, const char *status_id, const char *attr_id, ...) { - GSList *l; + GSList *list, *iter; g_return_if_fail(account != NULL); g_return_if_fail(name != NULL); g_return_if_fail(status_id != NULL); g_return_if_fail(gaim_account_is_connected(account)); - for (l = gaim_find_buddies(account, name); l != NULL; l = l->next) + list = gaim_find_buddies(account, name); + for (iter = list; iter != NULL; iter = iter->next) { GaimBuddy *buddy; GaimPresence *presence; GaimStatus *status; GaimStatus *old_status; - buddy = (GaimBuddy *)l->data; + buddy = (GaimBuddy *)iter->data; presence = gaim_buddy_get_presence(buddy); status = gaim_presence_get_status(presence, status_id); @@ -276,6 +281,7 @@ gaim_presence_set_status_active(presence, status_id, TRUE); gaim_blist_update_buddy_status(buddy, old_status); } + g_slist_free(list); } void