Commit de3713cb28bb2916b110137c988c7dc1ba7a9c8d
1 parent
0e4d7b85
Exists in
master
and in
2 other branches
Disabling toolbar and header bar on invalid gsettings object to avoid
segfaults.
Showing
3 changed files
with
24 additions
and
3 deletions
Show diff stats
src/objects/application/application.c
... | ... | @@ -175,8 +175,17 @@ |
175 | 175 | |
176 | 176 | static gboolean on_user_interface(const gchar G_GNUC_UNUSED(*option), const gchar *value, gpointer G_GNUC_UNUSED(dunno), GError **error) { |
177 | 177 | |
178 | - g_autoptr(GSettings) app_settings = pw3270_application_settings_new(); | |
178 | + g_autoptr(GSettings) app_settings = pw3270_application_settings_new(); | |
179 | + if(!app_settings) { | |
180 | + g_warning("Can't get application settings"); | |
181 | + return FALSE; | |
182 | + } | |
183 | + | |
179 | 184 | g_autoptr(GSettings) win_settings = pw3270_application_window_settings_new(); |
185 | + if(!win_settings) { | |
186 | + g_warning("Can't get window settings"); | |
187 | + return FALSE; | |
188 | + } | |
180 | 189 | |
181 | 190 | if(!g_ascii_strcasecmp(value,"gnome")) { |
182 | 191 | ... | ... |
src/objects/toolbar/settings.c
... | ... | @@ -222,10 +222,16 @@ |
222 | 222 | return GTK_WIDGET(settings); |
223 | 223 | } |
224 | 224 | |
225 | - void load(GtkWidget G_GNUC_UNUSED(*widget), GSettings *settings, PW3270SettingsPage *page) { | |
225 | + void load(GtkWidget *widget, GSettings *settings, PW3270SettingsPage *page) { | |
226 | 226 | |
227 | 227 | size_t ix; |
228 | 228 | |
229 | + if(!G_IS_SETTINGS(settings)) { | |
230 | + g_warning("The settings object is not valid, disabling dialog to avoid segfaults"); | |
231 | + gtk_widget_set_sensitive(widget,FALSE); | |
232 | + return; | |
233 | + } | |
234 | + | |
229 | 235 | // Populate views |
230 | 236 | Pw3270ActionList * action_list = pw3270_action_list_new(GTK_APPLICATION(g_application_get_default())); |
231 | 237 | ... | ... |
src/objects/window/header-settings.c
... | ... | @@ -102,7 +102,13 @@ |
102 | 102 | return GTK_WIDGET(settings); |
103 | 103 | } |
104 | 104 | |
105 | - void load(GtkWidget G_GNUC_UNUSED(*widget), GSettings *settings, PW3270SettingsPage *page) { | |
105 | + void load(GtkWidget *widget, GSettings *settings, PW3270SettingsPage *page) { | |
106 | + | |
107 | + if(!G_IS_SETTINGS(settings)) { | |
108 | + g_warning("The settings object is not valid, disabling dialog to avoid segfaults"); | |
109 | + gtk_widget_set_sensitive(widget,FALSE); | |
110 | + return; | |
111 | + } | |
106 | 112 | |
107 | 113 | // Get avaliable actions. |
108 | 114 | Pw3270ActionList * action_list = pw3270_action_list_new(GTK_APPLICATION(g_application_get_default())); | ... | ... |