From: Bastien Nocera Date: Wed, 25 Sep 2013 14:14:17 +0000 (+0200) Subject: gdesktopappinfo: Call g_file_get_path() on demand X-Git-Tag: 2.39.0~111 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2d8e5ef81e8116eeb8fea18292360dd3166b4b4e;p=platform%2Fupstream%2Fglib.git gdesktopappinfo: Call g_file_get_path() on demand Rather than always calling out to g_file_get_path() (which might block, whatever the documentation might say), postpone the call until we actually need it. https://bugzilla.gnome.org/show_bug.cgi?id=708753 --- diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c index f7f0169..b584942 100644 --- a/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c @@ -869,11 +869,10 @@ expand_macro_single (char macro, char *uri) { GFile *file; char *result = NULL; - char *path, *name; + char *path = NULL; + char *name; file = g_file_new_for_uri (uri); - path = g_file_get_path (file); - g_object_unref (file); switch (macro) { @@ -883,11 +882,13 @@ expand_macro_single (char macro, char *uri) break; case 'f': case 'F': + path = g_file_get_path (file); if (path) result = g_shell_quote (path); break; case 'd': case 'D': + path = g_file_get_path (file); if (path) { name = g_path_get_dirname (path); @@ -897,6 +898,7 @@ expand_macro_single (char macro, char *uri) break; case 'n': case 'N': + path = g_file_get_path (file); if (path) { name = g_path_get_basename (path); @@ -906,6 +908,7 @@ expand_macro_single (char macro, char *uri) break; } + g_object_unref (file); g_free (path); return result;