summaryrefslogtreecommitdiff
blob: 4353c7490ffe645c32410c846fea1746d8bf7105 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Index: thunar-vfs/thunar-vfs-exec.c
===================================================================
--- thunar-vfs/thunar-vfs-exec.c	(revision 26428)
+++ thunar-vfs/thunar-vfs-exec.c	(working copy)
@@ -324,8 +324,10 @@
   if (startup_data->watch_id != 0)
     g_source_remove (startup_data->watch_id);
 
-  /* close the PID */
-  g_spawn_close_pid (startup_data->pid);
+  /* make sure we don't leave zombies (see bug #2983 for details) */
+  g_child_watch_add_full (G_PRIORITY_LOW, startup_data->pid,
+                          (GChildWatchFunc) g_spawn_close_pid,
+                          NULL, NULL);
 
   /* release the startup data */
   _thunar_vfs_slice_free (TvsnStartupData, startup_data);
@@ -513,7 +515,13 @@
           startup_data->pid = pid;
         }
     }
+  else if (G_LIKELY (succeed))
+    {
+      /* make sure we don't leave zombies (see bug #2983 for details) */
+      g_child_watch_add_full (G_PRIORITY_LOW, pid, (GChildWatchFunc) g_spawn_close_pid, NULL, NULL);
 
+    }
+
   /* release the sn display */
   if (G_LIKELY (sn_display != NULL))
     sn_display_unref (sn_display);