From ebddb60e3e05261db34aa13e443ab870b0dade1d Mon Sep 17 00:00:00 2001 From: Luca Bacci Date: Wed, 24 Nov 2021 14:34:57 +0100 Subject: [PATCH 1/2] Add vfunc checks in gappinfo.c Fixes crashes caused by calling unimplemented vfuncs on Windows --- gio/gappinfo.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/gio/gappinfo.c b/gio/gappinfo.c index d9d2bdaf7..3f0332825 100644 --- a/gio/gappinfo.c +++ b/gio/gappinfo.c @@ -326,7 +326,12 @@ g_app_info_set_as_default_for_type (GAppInfo *appinfo, iface = G_APP_INFO_GET_IFACE (appinfo); - return (* iface->set_as_default_for_type) (appinfo, content_type, error); + if (iface->set_as_default_for_type) + return (* iface->set_as_default_for_type) (appinfo, content_type, error); + + g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("Setting default applications not supported yet")); + return FALSE; } /** @@ -354,7 +359,12 @@ g_app_info_set_as_last_used_for_type (GAppInfo *appinfo, iface = G_APP_INFO_GET_IFACE (appinfo); - return (* iface->set_as_last_used_for_type) (appinfo, content_type, error); + if (iface->set_as_last_used_for_type) + return (* iface->set_as_last_used_for_type) (appinfo, content_type, error); + + g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("Setting application as last used for type not supported yet")); + return FALSE; } /** From de6da5aa73474c27fe02a9f63b3d3a00ade77c2f Mon Sep 17 00:00:00 2001 From: Luca Bacci Date: Wed, 24 Nov 2021 15:00:39 +0100 Subject: [PATCH 2/2] GWin32AppInfo: Implement should_show vfunc --- gio/gwin32appinfo.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gio/gwin32appinfo.c b/gio/gwin32appinfo.c index 38719c4c0..fe831ad73 100644 --- a/gio/gwin32appinfo.c +++ b/gio/gwin32appinfo.c @@ -5093,6 +5093,15 @@ g_win32_app_info_launch_uris (GAppInfo *appinfo, return res; } +static gboolean +g_win32_app_info_should_show (GAppInfo *appinfo) +{ + /* FIXME: This is a placeholder implementation to avoid crashes + * for now. It can be made more specific to @appinfo in future. */ + + return TRUE; +} + static gboolean g_win32_app_info_launch (GAppInfo *appinfo, GList *files, @@ -5229,7 +5238,7 @@ g_win32_app_info_iface_init (GAppInfoIface *iface) iface->supports_uris = g_win32_app_info_supports_uris; iface->supports_files = g_win32_app_info_supports_files; iface->launch_uris = g_win32_app_info_launch_uris; -/* iface->should_show = g_win32_app_info_should_show;*/ + iface->should_show = g_win32_app_info_should_show; /* iface->set_as_default_for_type = g_win32_app_info_set_as_default_for_type;*/ /* iface->set_as_default_for_extension = g_win32_app_info_set_as_default_for_extension;*/ /* iface->add_supports_type = g_win32_app_info_add_supports_type;*/