--- icewm-1.0.6/src/yapp.cc.fdleak Sat Jan 13 02:23:18 2001 +++ icewm-1.0.6/src/yapp.cc Wed Mar 14 18:41:15 2001 @@ -382,6 +382,18 @@ char *fData; }; +#if defined(F_GETFD) && defined(FD_CLOEXEC) +static void +set_cloexec_flag (int fd) +{ + int flags = fcntl (fd, F_GETFD, 0); + if (flags < 0) + return; + flags |= FD_CLOEXEC; + fcntl (fd, F_SETFD, flags); +} +#endif /* defined(F_GETFD) && defined(FD_CLOEXEC) */ + void initSignals() { sigemptyset(&signalMask); sigaddset(&signalMask, SIGHUP); @@ -392,6 +404,10 @@ if (pipe(signalPipe) != 0) die(2, _("Pipe creation failed (errno=%d)."), errno); fcntl(signalPipe[1], F_SETFL, O_NONBLOCK); +#if defined(F_GETFD) && defined(FD_CLOEXEC) + set_cloexec_flag(signalPipe[0]); + set_cloexec_flag(signalPipe[1]); +#endif /* defined(F_GETFD) && defined(FD_CLOEXEC) */ } static void initAtoms() {