diff --git a/i3bar/src/child.c b/i3bar/src/child.c index ae0f47ee..aa9d6554 100644 --- a/i3bar/src/child.c +++ b/i3bar/src/child.c @@ -40,6 +40,8 @@ void cleanup() { ev_io_stop(main_loop, stdin_io); FREE(stdin_io); FREE(statusline_buffer); + /* statusline pointed to memory within statusline_buffer */ + statusline = NULL; } if (child_sig != NULL) { @@ -78,9 +80,10 @@ void stdin_io_cb(struct ev_loop *loop, ev_io *watcher, int revents) { } /* end of file, kill the watcher */ - DLOG("stdin: EOF\n"); + ELOG("stdin: received EOF\n"); cleanup(); - break; + draw_bars(); + return; } rec += n; @@ -110,7 +113,7 @@ void stdin_io_cb(struct ev_loop *loop, ev_io *watcher, int revents) { * */ void child_sig_cb(struct ev_loop *loop, ev_child *watcher, int revents) { - DLOG("Child (pid: %d) unexpectedly exited with status %d\n", + ELOG("Child (pid: %d) unexpectedly exited with status %d\n", child_pid, watcher->rstatus); cleanup();