diff --git a/fsnotify_bsd.go b/fsnotify_bsd.go
index <HASH>..<HASH> 100644
--- a/fsnotify_bsd.go
+++ b/fsnotify_bsd.go
@@ -212,14 +212,12 @@ func (w *Watcher) readEvents() {
 			if errno != nil && errno != syscall.EINTR {
 				w.Error <- os.NewSyscallError("kevent", errno)
 				continue
-			} else {
-				events = eventbuf[0:n]
 			}
-		}
 
-		// Timeout, no big deal
-		if n == 0 {
-			continue
+			// Received some events
+			if n > 0 {
+				events = eventbuf[0:n]
+			}
 		}
 
 		// Flush the events we recieved to the events channel
BSD - fix for rob (EINTR)