diff options
-rw-r--r-- | bus/ibusimpl.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c index 216de11..3af090d 100644 --- a/bus/ibusimpl.c +++ b/bus/ibusimpl.c @@ -901,7 +901,14 @@ _ibus_exit (BusIBusImpl *ibus, } else { extern gchar **g_argv; - execv (g_argv[0], g_argv); + gchar *exe; + + exe = g_strdup_printf ("/proc/%d/exe", getpid ()); + if (!g_file_test (exe, G_FILE_TEST_EXISTS)) { + g_free (exe); + exe = g_argv[0]; + } + execv (exe, g_argv); g_warning ("execv %s failed!", g_argv[0]); exit (-1); } |