pidgin/pidgin

4f86a754ed7b
Parents 55aaac83f315
Children 201aae92d734
Fix a crash when opening the new instant message dialog

Testing Done:
Opend the dialog and verified it didn't crash anymore. Originally saw the crash with bonjour, demo, and ircv3 accounts enabled.

Reviewed at https://reviews.imfreedom.org/r/2057/
--- a/pidgin/gtkrequest.c Thu Nov 10 23:11:29 2022 -0600
+++ b/pidgin/gtkrequest.c Fri Nov 11 18:57:54 2022 -0600
@@ -1398,23 +1398,32 @@
static GtkWidget *
create_account_field(PurpleRequestField *field)
{
- GtkWidget *widget;
- PurpleAccount *account;
+ GtkWidget *widget = NULL;
+ PurpleAccount *account = NULL;
+ PurpleFilterAccountFunc account_filter = NULL;
GtkFilter *filter = NULL;
widget = pidgin_account_chooser_new();
account = purple_request_field_account_get_default_value(field);
- filter = GTK_FILTER(gtk_custom_filter_new(
- field_custom_account_filter_cb,
- purple_request_field_account_get_filter(field),
- NULL));
+ account_filter = purple_request_field_account_get_filter(field);
+ if(account_filter != NULL) {
+ GtkCustomFilter *custom_filter = NULL;
+
+ custom_filter = gtk_custom_filter_new(field_custom_account_filter_cb,
+ account_filter, NULL);
+
+ filter = GTK_FILTER(custom_filter);
+ }
if(!purple_request_field_account_get_show_all(field)) {
GtkEveryFilter *every = NULL;
every = gtk_every_filter_new();
- gtk_multi_filter_append(GTK_MULTI_FILTER(every), filter);
+
+ if(GTK_IS_FILTER(filter)) {
+ gtk_multi_filter_append(GTK_MULTI_FILTER(every), filter);
+ }
filter = pidgin_account_filter_connected_new();
gtk_multi_filter_append(GTK_MULTI_FILTER(every), filter);
@@ -1424,8 +1433,11 @@
pidgin_account_chooser_set_selected(PIDGIN_ACCOUNT_CHOOSER(widget),
account);
- pidgin_account_chooser_set_filter(PIDGIN_ACCOUNT_CHOOSER(widget), filter);
- g_object_unref(filter);
+
+ if(GTK_IS_FILTER(filter)) {
+ pidgin_account_chooser_set_filter(PIDGIN_ACCOUNT_CHOOSER(widget), filter);
+ g_object_unref(filter);
+ }
g_signal_connect(widget, "notify::account", G_CALLBACK(field_account_cb),
field);