avoid crashes on log client teardown
[disorder] / lib / event.c
index bbb7112..9c48ed1 100644 (file)
@@ -29,6 +29,7 @@
 #include <sys/types.h>
 #include <sys/resource.h>
 #include <sys/wait.h>
+#include <sys/stat.h>
 #include <unistd.h>
 #include <assert.h>
 #include <signal.h>
@@ -265,7 +266,7 @@ int ev_run(ev_source *ev) {
              error(errno, "mode %s fstat %d (%s)",
                    modenames[mode], fd, ev->mode[mode].fds[n].what);
          }
-         for(n = 0; n < maxfd; ++n)
+         for(n = 0; n <= maxfd; ++n)
            if(FD_ISSET(n, &ev->mode[mode].enabled)
               && fstat(n, &sb) < 0)
              error(errno, "mode %s fstat %d", modenames[mode], n);
@@ -977,6 +978,8 @@ ev_writer *ev_writer_new(ev_source *ev,
  * descriptor as and when it is writable.
  */
 struct sink *ev_writer_sink(ev_writer *w) {
+  if(!w)
+    fatal(0, "ev_write_sink called with null writer");
   return &w->s;
 }