From d4862b25cd1f55ea4d8b6fe9ff7c92315ff0cf10 Mon Sep 17 00:00:00 2001 From: Peter Keller Date: Sun, 7 Mar 2010 00:09:57 +0100 Subject: [PATCH] Avoid calling NULL callbacks. --- src/multiplex/event-loop.lisp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/multiplex/event-loop.lisp b/src/multiplex/event-loop.lisp index 35879fd..12e7115 100644 --- a/src/multiplex/event-loop.lisp +++ b/src/multiplex/event-loop.lisp @@ -306,7 +306,7 @@ within the extent of BODY. Closes VAR." (setf expired-events nil) (setf (values eventsp deletion-list) (dispatch-fd-events-once event-base poll-timeout now)) - (%remove-handlers event-base deletion-list) + (%remove-handlers event-base (delete nil deletion-list)) (when (expire-pending-timers fd-timers now) (setf eventsp t)) (dispatch-fd-timeouts expired-events) (when (expire-pending-timers timers now) (setf eventsp t)) @@ -352,13 +352,14 @@ within the extent of BODY. Closes VAR." (defun %dispatch-event (fd-entry event-type errorp now) (let ((ev (fd-entry-handler fd-entry event-type))) - (funcall (fd-handler-callback ev) - (fd-entry-fd fd-entry) - event-type - (if errorp :error nil)) - (when-let (timer (fd-handler-timer ev)) - (reschedule-timer-relative-to-now timer now)) - (fd-handler-one-shot-p ev))) + (when ev + (funcall (fd-handler-callback ev) + (fd-entry-fd fd-entry) + event-type + (if errorp :error nil)) + (when-let (timer (fd-handler-timer ev)) + (reschedule-timer-relative-to-now timer now)) + (fd-handler-one-shot-p ev)))) (defun dispatch-fd-timeouts (events) (dolist (ev events) -- 2.11.4.GIT