From a9fc7e59357233771f1b137b6ebec382371b6e54 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Wed, 9 Dec 2020 11:44:37 +0000 Subject: [PATCH] gosxappinfo: Add some more precondition checks These might help catch the problem in #2119 earlier on, and provide more information about its root cause. They should not affect behaviour in normal application usage. Signed-off-by: Philip Withnall Helps: #2119 --- gio/gosxappinfo.m | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/gio/gosxappinfo.m b/gio/gosxappinfo.m index bcb1f5648..03c373778 100644 --- a/gio/gosxappinfo.m +++ b/gio/gosxappinfo.m @@ -168,6 +168,7 @@ get_bundle_string_value (NSBundle *bundle, static CFStringRef create_cfstring_from_cstr (const gchar *cstr) { + g_return_val_if_fail (cstr != NULL, NULL); return CFStringCreateWithCString (NULL, cstr, kCFStringEncodingUTF8); } @@ -279,8 +280,14 @@ create_urlspec_for_appinfo (GOsxAppInfo *info, GList *uris, gboolean are_files) { - LSLaunchURLSpec *urlspec = g_new0 (LSLaunchURLSpec, 1); - const gchar *app_cstr = g_osx_app_info_get_filename (info); + LSLaunchURLSpec *urlspec = NULL; + const gchar *app_cstr; + + g_return_val_if_fail (G_IS_OSX_APP_INFO (info), NULL); + + urlspec = g_new0 (LSLaunchURLSpec, 1); + app_cstr = g_osx_app_info_get_filename (info); + g_assert (app_cstr != NULL); /* Strip file:// from app url but ensure filesystem url */ urlspec->appURL = create_url_from_cstr (app_cstr + strlen ("file://"), TRUE); @@ -460,9 +467,14 @@ g_osx_app_info_launch_internal (GAppInfo *appinfo, GError **error) { GOsxAppInfo *info = G_OSX_APP_INFO (appinfo); - LSLaunchURLSpec *urlspec = create_urlspec_for_appinfo (info, uris, are_files); + LSLaunchURLSpec *urlspec; gint ret, success = TRUE; + g_return_val_if_fail (G_IS_OSX_APP_INFO (appinfo), FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + urlspec = create_urlspec_for_appinfo (info, uris, are_files); + if ((ret = LSOpenFromURLSpec (urlspec, NULL))) { /* TODO: Better error codes */