summaryrefslogtreecommitdiff
path: root/gtk/gtkappchooserdialog.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2011-08-28 22:43:20 -0400
committerMatthias Clasen <mclasen@redhat.com>2011-08-28 22:46:46 -0400
commit6d797d5356cf7af445befb846e260b92e6cece2c (patch)
tree17b64632600401798727444c69ab9cf6851779af /gtk/gtkappchooserdialog.c
parent676316bbd3a20a703d3005b841b593e0c5ff30a3 (diff)
downloadgtk+-6d797d5356cf7af445befb846e260b92e6cece2c.tar.gz
GtkAppChooser: Deal with 'no app found' gracefully
Several functions inside GtkAppChooserDialog were not handling the situation that app_info might be NULL after the user clicked 'Select'. https://bugzilla.gnome.org/show_bug.cgi?id=651827
Diffstat (limited to 'gtk/gtkappchooserdialog.c')
-rw-r--r--gtk/gtkappchooserdialog.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/gtk/gtkappchooserdialog.c b/gtk/gtkappchooserdialog.c
index 5f0de03766..178d291e20 100644
--- a/gtk/gtkappchooserdialog.c
+++ b/gtk/gtkappchooserdialog.c
@@ -212,6 +212,12 @@ check_application (GtkAppChooserDialog *self,
command = NULL;
info = gtk_app_chooser_get_app_info (GTK_APP_CHOOSER (self->priv->app_chooser_widget));
+ if (info == NULL)
+ {
+ *app_out = NULL;
+ return FALSE;
+ }
+
command = g_app_info_get_executable (info);
g_shell_parse_argv (command, &argc, &argv, &error);
@@ -258,13 +264,15 @@ add_or_find_application (GtkAppChooserDialog *self)
app = gtk_app_chooser_get_app_info (GTK_APP_CHOOSER (self));
- /* we don't care about reporting errors here */
- if (self->priv->content_type)
- g_app_info_set_as_last_used_for_type (app,
- self->priv->content_type,
- NULL);
-
- g_object_unref (app);
+ if (app)
+ {
+ /* we don't care about reporting errors here */
+ if (self->priv->content_type)
+ g_app_info_set_as_last_used_for_type (app,
+ self->priv->content_type,
+ NULL);
+ g_object_unref (app);
+ }
}
static void