GAppInfo: overwrite the DISPLAY only if it is set in the launch context
authorDebarshi Ray <debarshir@gnome.org>
Mon, 16 Apr 2012 21:00:01 +0000 (23:00 +0200)
committerDebarshi Ray <debarshir@gnome.org>
Thu, 26 Apr 2012 21:10:41 +0000 (23:10 +0200)
If the launch context is a GAppLaunchContext, and not a
GdkAppLaunchContext, then g_app_launch_context_get_display will return
NULL because the get_display virtual method is undefined. The DISPLAY
might still be inherited from the parent process, in which case
overwriting it with NULL breaks the launch.

This is a regression introduced in:
de834bed306565c0652050665eafff4dfcdf0d8b

Fixes: https://bugzilla.gnome.org/672786

gio/gdesktopappinfo.c

index 7078dab..4044679 100644 (file)
@@ -1309,7 +1309,8 @@ _g_desktop_app_info_launch_uris_internal (GAppInfo                   *appinfo,
           display = g_app_launch_context_get_display (launch_context,
                                                       appinfo,
                                                       launched_files);
-          envp = g_environ_setenv (envp, "DISPLAY", display, TRUE);
+          if (display)
+            envp = g_environ_setenv (envp, "DISPLAY", display, TRUE);
 
           if (info->startup_notify)
             {