diff options
Diffstat (limited to 'protocols/nogaim.c')
-rw-r--r-- | protocols/nogaim.c | 33 |
1 files changed, 19 insertions, 14 deletions
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) |