]> git.sur5r.net Git - i3/i3/commitdiff
i3bar: Do not kill watcher on EOF
authorTony Crisci <tony@dubstepdish.com>
Fri, 14 Feb 2014 01:17:18 +0000 (20:17 -0500)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 15 Feb 2014 11:55:30 +0000 (12:55 +0100)
Wait for the child process to exit on its own before freeing
watcher-related resources.

i3bar shows the last received status line until the process exits.

Fixes a race condition where the termination signal was sometimes not
received to display a meaningful error message.

i3bar/src/child.c

index d19192f21a943f813cbcac7937ef4c070d0e2f9d..cfdf911c11442866176ce158293dd2952befcefc 100644 (file)
@@ -266,6 +266,8 @@ static int stdin_end_array(void *context) {
 /*
  * Helper function to read stdin
  *
+ * Returns NULL on EOF.
+ *
  */
 static unsigned char *get_buffer(ev_io *watcher, int *ret_buffer_len) {
     int fd = watcher->fd;
@@ -285,9 +287,7 @@ static unsigned char *get_buffer(ev_io *watcher, int *ret_buffer_len) {
             exit(EXIT_FAILURE);
         }
         if (n == 0) {
-            /* end of file, kill the watcher */
             ELOG("stdin: received EOF\n");
-            cleanup();
             *ret_buffer_len = -1;
             return NULL;
         }