aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordequis <dx@dxzone.com.ar>2015-12-05 13:06:54 -0300
committerdequis <dx@dxzone.com.ar>2015-12-05 13:06:54 -0300
commited431c389887080dc4fa45e30d051ce733f4ce57 (patch)
tree5a34a118c4aa714e425a88e0b49a1c3e1f186b13
parentac68733ad7a5127395d6367b655a2d9de5d911b5 (diff)
imc_away_send_update: Fix leak of away_states linked list
-rw-r--r--protocols/nogaim.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/protocols/nogaim.c b/protocols/nogaim.c
index a5eda2e0..0339feea 100644
--- a/protocols/nogaim.c
+++ b/protocols/nogaim.c
@@ -610,6 +610,7 @@ static char *imc_away_state_find(GList *gcm, char *away, char **message);
int imc_away_send_update(struct im_connection *ic)
{
char *away, *msg = NULL;
+ GList *m = NULL;
if (ic->acc->prpl->away_states == NULL ||
ic->acc->prpl->set_away == NULL) {
@@ -619,7 +620,7 @@ int imc_away_send_update(struct im_connection *ic)
away = set_getstr(&ic->acc->set, "away") ?
: set_getstr(&ic->bee->set, "away");
if (away && *away) {
- GList *m = ic->acc->prpl->away_states(ic);
+ m = ic->acc->prpl->away_states(ic);
msg = ic->acc->flags & ACC_FLAG_AWAY_MESSAGE ? away : NULL;
away = imc_away_state_find(m, away, &msg) ? :
(imc_away_state_find(m, "away", &msg) ? : m->data);
@@ -631,6 +632,10 @@ int imc_away_send_update(struct im_connection *ic)
ic->acc->prpl->set_away(ic, away, msg);
+ while (m) {
+ m = g_list_delete_link(m, m);
+ }
+
return 1;
}