diff options
| author | dequis <dx@dxzone.com.ar> | 2015-12-05 13:06:54 -0300 | 
|---|---|---|
| committer | dequis <dx@dxzone.com.ar> | 2015-12-05 13:06:54 -0300 | 
| commit | ed431c389887080dc4fa45e30d051ce733f4ce57 (patch) | |
| tree | 5a34a118c4aa714e425a88e0b49a1c3e1f186b13 | |
| parent | ac68733ad7a5127395d6367b655a2d9de5d911b5 (diff) | |
imc_away_send_update: Fix leak of away_states linked list
| -rw-r--r-- | protocols/nogaim.c | 7 | 
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;  } | 
