diff --git a/src/objects/application/application.c b/src/objects/application/application.c index 7ae388f..77f5975 100644 --- a/src/objects/application/application.c +++ b/src/objects/application/application.c @@ -175,8 +175,17 @@ static gboolean on_user_interface(const gchar G_GNUC_UNUSED(*option), const gchar *value, gpointer G_GNUC_UNUSED(dunno), GError **error) { - g_autoptr(GSettings) app_settings = pw3270_application_settings_new(); + g_autoptr(GSettings) app_settings = pw3270_application_settings_new(); + if(!app_settings) { + g_warning("Can't get application settings"); + return FALSE; + } + g_autoptr(GSettings) win_settings = pw3270_application_window_settings_new(); + if(!win_settings) { + g_warning("Can't get window settings"); + return FALSE; + } if(!g_ascii_strcasecmp(value,"gnome")) { diff --git a/src/objects/toolbar/settings.c b/src/objects/toolbar/settings.c index f52b72c..038ecdb 100644 --- a/src/objects/toolbar/settings.c +++ b/src/objects/toolbar/settings.c @@ -222,10 +222,16 @@ return GTK_WIDGET(settings); } - void load(GtkWidget G_GNUC_UNUSED(*widget), GSettings *settings, PW3270SettingsPage *page) { + void load(GtkWidget *widget, GSettings *settings, PW3270SettingsPage *page) { size_t ix; + if(!G_IS_SETTINGS(settings)) { + g_warning("The settings object is not valid, disabling dialog to avoid segfaults"); + gtk_widget_set_sensitive(widget,FALSE); + return; + } + // Populate views Pw3270ActionList * action_list = pw3270_action_list_new(GTK_APPLICATION(g_application_get_default())); diff --git a/src/objects/window/header-settings.c b/src/objects/window/header-settings.c index 539ab6c..d65d956 100644 --- a/src/objects/window/header-settings.c +++ b/src/objects/window/header-settings.c @@ -102,7 +102,13 @@ return GTK_WIDGET(settings); } - void load(GtkWidget G_GNUC_UNUSED(*widget), GSettings *settings, PW3270SettingsPage *page) { + void load(GtkWidget *widget, GSettings *settings, PW3270SettingsPage *page) { + + if(!G_IS_SETTINGS(settings)) { + g_warning("The settings object is not valid, disabling dialog to avoid segfaults"); + gtk_widget_set_sensitive(widget,FALSE); + return; + } // Get avaliable actions. Pw3270ActionList * action_list = pw3270_action_list_new(GTK_APPLICATION(g_application_get_default())); -- libgit2 0.21.2