# HG changeset patch # User Anselm R Garbe # Date 1250156759 -3600 # Node ID cf5bb4e72804f2d5978c3069009cbf5c2d6319a8 # Parent aefd753cfe9b98f308e3d4bc585bb1f1aaf081f7 added merged patch of anydot and Neale diff -r aefd753cfe9b -r cf5bb4e72804 dwm.c --- a/dwm.c Mon Jul 27 12:01:58 2009 +0100 +++ b/dwm.c Thu Aug 13 10:45:59 2009 +0100 @@ -207,7 +207,7 @@ static void setmfact(const Arg *arg); static void setup(void); static void showhide(Client *c); -static void sigchld(int signal); +static void sigchld(int unused); static void spawn(const Arg *arg); static void tag(const Arg *arg); static void tagmon(const Arg *arg); @@ -1428,6 +1428,10 @@ int w; XSetWindowAttributes wa; + /* clean up any zombies immediately */ + signal(SIGCHLD, sigchld); + sigchld(0); + /* init screen */ screen = DefaultScreen(dpy); root = RootWindow(dpy, screen); @@ -1496,13 +1500,13 @@ void -sigchld(int signal) { +sigchld(int unused) { while(0 < waitpid(-1, NULL, WNOHANG)); + signal(SIGCHLD, sigchld); } void spawn(const Arg *arg) { - signal(SIGCHLD, sigchld); if(fork() == 0) { if(dpy) close(ConnectionNumber(dpy));