From 0bc9cf6403282a4c10e9331e67be92072cf5c5c2 Mon Sep 17 00:00:00 2001 From: Peng Huang Date: Thu, 12 Feb 2009 13:25:01 +0800 Subject: Fix restart problem --- bus/ibusimpl.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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); } -- cgit