diff options
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/jabber/jabber_util.c | 1 | ||||
| -rw-r--r-- | protocols/msn/msn_util.c | 20 | ||||
| -rw-r--r-- | protocols/nogaim.c | 33 | 
3 files changed, 33 insertions, 21 deletions
| diff --git a/protocols/jabber/jabber_util.c b/protocols/jabber/jabber_util.c index b0bc033f..779d502b 100644 --- a/protocols/jabber/jabber_util.c +++ b/protocols/jabber/jabber_util.c @@ -565,6 +565,7 @@ struct jabber_buddy *jabber_buddy_by_ext_jid(struct im_connection *ic, char *jid  	jid = jabber_normalize_ext(jid_);  	if ((s = strchr(jid, '=')) == NULL) { +		g_free(jid);  		return NULL;  	} diff --git a/protocols/msn/msn_util.c b/protocols/msn/msn_util.c index 8f929305..5164a8d2 100644 --- a/protocols/msn/msn_util.c +++ b/protocols/msn/msn_util.c @@ -173,6 +173,15 @@ struct msn_buddy_ask_data {  	char *realname;  }; +static void msn_buddy_ask_free(void *data) +{ +	struct msn_buddy_ask_data *bla = data; + +	g_free(bla->handle); +	g_free(bla->realname); +	g_free(bla); +} +  static void msn_buddy_ask_yes(void *data)  {  	struct msn_buddy_ask_data *bla = data; @@ -181,9 +190,7 @@ static void msn_buddy_ask_yes(void *data)  	imcb_ask_add(bla->ic, bla->handle, NULL); -	g_free(bla->handle); -	g_free(bla->realname); -	g_free(bla); +	msn_buddy_ask_free(bla);  }  static void msn_buddy_ask_no(void *data) @@ -192,9 +199,7 @@ static void msn_buddy_ask_no(void *data)  	msn_buddy_list_add(bla->ic, MSN_BUDDY_BL, bla->handle, bla->realname, NULL); -	g_free(bla->handle); -	g_free(bla->realname); -	g_free(bla); +	msn_buddy_ask_free(bla);  }  void msn_buddy_ask(bee_user_t *bu) @@ -215,7 +220,8 @@ void msn_buddy_ask(bee_user_t *bu)  	g_snprintf(buf, sizeof(buf),  	           "The user %s (%s) wants to add you to his/her buddy list.",  	           bu->handle, bu->fullname); -	imcb_ask(bu->ic, buf, bla, msn_buddy_ask_yes, msn_buddy_ask_no); + +	imcb_ask_with_free(bu->ic, buf, bla, msn_buddy_ask_yes, msn_buddy_ask_no, msn_buddy_ask_free);  }  /* *NOT* thread-safe, but that's not a problem for now... */ diff --git a/protocols/nogaim.c b/protocols/nogaim.c index 2de24af8..a35b9838 100644 --- a/protocols/nogaim.c +++ b/protocols/nogaim.c @@ -497,14 +497,21 @@ struct imcb_ask_cb_data {  	char *handle;  }; +static void imcb_ask_cb_free(void *data) +{ +	struct imcb_ask_cb_data *cbd = data; + +	g_free(cbd->handle); +	g_free(cbd); +} +  static void imcb_ask_auth_cb_no(void *data)  {  	struct imcb_ask_cb_data *cbd = data;  	cbd->ic->acc->prpl->auth_deny(cbd->ic, cbd->handle); -	g_free(cbd->handle); -	g_free(cbd); +	imcb_ask_cb_free(cbd);  }  static void imcb_ask_auth_cb_yes(void *data) @@ -513,8 +520,7 @@ static void imcb_ask_auth_cb_yes(void *data)  	cbd->ic->acc->prpl->auth_allow(cbd->ic, cbd->handle); -	g_free(cbd->handle); -	g_free(cbd); +	imcb_ask_cb_free(cbd);  }  void imcb_ask_auth(struct im_connection *ic, const char *handle, const char *realname) @@ -534,14 +540,9 @@ void imcb_ask_auth(struct im_connection *ic, const char *handle, const char *rea  	data->ic = ic;  	data->handle = g_strdup(handle);  	query_add((irc_t *) ic->bee->ui_data, ic, s, -	          imcb_ask_auth_cb_yes, imcb_ask_auth_cb_no, g_free, data); -} - +	          imcb_ask_auth_cb_yes, imcb_ask_auth_cb_no, imcb_ask_cb_free, data); -static void imcb_ask_add_cb_no(void *data) -{ -	g_free(((struct imcb_ask_cb_data*) data)->handle); -	g_free(data); +	g_free(s);  }  static void imcb_ask_add_cb_yes(void *data) @@ -550,12 +551,12 @@ static void imcb_ask_add_cb_yes(void *data)  	cbd->ic->acc->prpl->add_buddy(cbd->ic, cbd->handle, NULL); -	imcb_ask_add_cb_no(data); +	imcb_ask_cb_free(data);  }  void imcb_ask_add(struct im_connection *ic, const char *handle, const char *realname)  { -	struct imcb_ask_cb_data *data = g_new0(struct imcb_ask_cb_data, 1); +	struct imcb_ask_cb_data *data;  	char *s;  	/* TODO: Make a setting for this! */ @@ -563,12 +564,16 @@ void imcb_ask_add(struct im_connection *ic, const char *handle, const char *real  		return;  	} +	data = g_new0(struct imcb_ask_cb_data, 1); +  	s = g_strdup_printf("The user %s is not in your buddy list yet. Do you want to add him/her now?", handle);  	data->ic = ic;  	data->handle = g_strdup(handle);  	query_add((irc_t *) ic->bee->ui_data, ic, s, -	          imcb_ask_add_cb_yes, imcb_ask_add_cb_no, g_free, data); +	          imcb_ask_add_cb_yes, imcb_ask_cb_free, imcb_ask_cb_free, data); + +	g_free(s);  }  struct bee_user *imcb_buddy_by_handle(struct im_connection *ic, const char *handle) | 
