# HG changeset patch # User Paul Aurich # Date 1228538533 0 # Node ID 024818afb01370b8e226ebd7ec9cf49f8d1e600f # Parent 8b429520f6c64252522b6d06094ad3a94f2e3dba A patch to clean up authorization request related stuff. Fixes #7695. committer: John Bailey diff -r 8b429520f6c6 -r 024818afb013 finch/gntaccount.c --- a/finch/gntaccount.c Sat Dec 06 04:35:10 2008 +0000 +++ b/finch/gntaccount.c Sat Dec 06 04:42:13 2008 +0000 @@ -1069,6 +1069,8 @@ _("Authorize"), auth_cb, _("Deny"), deny_cb); } + g_signal_connect(G_OBJECT(uihandle), "destroy", + G_CALLBACK(purple_account_request_close), NULL); g_free(buffer); return uihandle; } diff -r 8b429520f6c6 -r 024818afb013 pidgin/gtkaccount.c --- a/pidgin/gtkaccount.c Sat Dec 06 04:35:10 2008 +0000 +++ b/pidgin/gtkaccount.c Sat Dec 06 04:42:13 2008 +0000 @@ -2425,25 +2425,25 @@ }; static void -authorize_and_add_cb(struct auth_and_add *aa) +free_auth_and_add(struct auth_and_add *aa) { - aa->auth_cb(aa->data); - purple_blist_request_add_buddy(aa->account, aa->username, - NULL, aa->alias); - g_free(aa->username); g_free(aa->alias); g_free(aa); } static void +authorize_and_add_cb(struct auth_and_add *aa) +{ + aa->auth_cb(aa->data); + purple_blist_request_add_buddy(aa->account, aa->username, + NULL, aa->alias); +} + +static void deny_no_add_cb(struct auth_and_add *aa) { aa->deny_cb(aa->data); - - g_free(aa->username); - g_free(aa->alias); - g_free(aa); } static void * @@ -2492,7 +2492,7 @@ _("Authorize"), authorize_and_add_cb, _("Deny"), deny_no_add_cb, NULL); - g_object_set_data(G_OBJECT(alert), "auth_and_add", aa); + g_signal_connect_swapped(G_OBJECT(alert), "destroy", G_CALLBACK(free_auth_and_add), aa); } else { alert = pidgin_make_mini_dialog(gc, PIDGIN_STOCK_DIALOG_QUESTION, _("Authorize buddy?"), buffer, user_data, @@ -2501,6 +2501,8 @@ NULL); } pidgin_blist_add_alert(alert); + g_signal_connect(G_OBJECT(alert), "destroy", + G_CALLBACK(purple_account_request_close), NULL); g_free(buffer); @@ -2510,13 +2512,6 @@ static void pidgin_accounts_request_close(void *ui_handle) { - /* This is super ugly, but without API changes, this is how it works */ - struct auth_and_add *aa = g_object_get_data(G_OBJECT(ui_handle), "auth_and_add"); - if (aa != NULL) { - g_free(aa->username); - g_free(aa->alias); - g_free(aa); - } gtk_widget_destroy(GTK_WIDGET(ui_handle)); }