From f670e70d7c0ffcc602f40aa1856fe085e5800455 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Sun, 18 Aug 2013 13:50:17 -0500 Subject: [PATCH] Set uninitialized inotify_fd to -1, not 0 Currently we set inotify_fd to the value 0 when inotify_fd hasn't been created yet, or after we close it. But 0 is a valid fd, and we check for the value -1 to see if it's been initialized. So, if inotify support is compiled in, but we disable_auto_reload, we can end up closing fd 0. This can screw up various other things in weird ways, including that exec'd processes appear to have an invalid stdin. So, set inotify_fd to -1 to clear all of this up. --- src/conky.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/conky.cc b/src/conky.cc index 95fff126..151ede1d 100644 --- a/src/conky.cc +++ b/src/conky.cc @@ -2017,7 +2017,7 @@ static void update_text(void) } #ifdef HAVE_SYS_INOTIFY_H -int inotify_fd; +int inotify_fd = -1; #endif static void main_loop(void) @@ -2484,7 +2484,7 @@ static void main_loop(void) } else if (disable_auto_reload.get(*state) && inotify_fd != -1) { inotify_rm_watch(inotify_fd, inotify_config_wd); close(inotify_fd); - inotify_fd = inotify_config_wd = 0; + inotify_fd = inotify_config_wd = -1; } #endif /* HAVE_SYS_INOTIFY_H */ @@ -2497,7 +2497,7 @@ static void main_loop(void) if (inotify_fd != -1) { inotify_rm_watch(inotify_fd, inotify_config_wd); close(inotify_fd); - inotify_fd = inotify_config_wd = 0; + inotify_fd = inotify_config_wd = -1; } #endif /* HAVE_SYS_INOTIFY_H */ }