xf86: use nt_list_for_each_entry_safe to walk InputHandlers in xf86Wakeup
authorAaron Plattner <aplattner@nvidia.com>
Mon, 11 Feb 2013 22:31:56 +0000 (14:31 -0800)
committerKeith Packard <keithp@keithp.com>
Tue, 12 Feb 2013 04:25:32 +0000 (20:25 -0800)
This is necessary when the input handler deletes itself from the
list. Bug found by Maarten Lankhorst, this patch uses the list macros
instead of open-coding the fix.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
hw/xfree86/common/xf86Events.c

index 377e936..d92174e 100644 (file)
@@ -272,9 +272,9 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
     }
 
     if (err >= 0) {             /* we don't want the handlers called if select() */
-        IHPtr ih;               /* returned with an error condition, do we?      */
+        IHPtr ih, ih_tmp;       /* returned with an error condition, do we?      */
 
-        for (ih = InputHandlers; ih; ih = ih->next) {
+        nt_list_for_each_entry_safe(ih, ih_tmp, InputHandlers, next) {
             if (ih->enabled && ih->fd >= 0 && ih->ihproc &&
                 (FD_ISSET(ih->fd, ((fd_set *) pReadmask)) != 0)) {
                 ih->ihproc(ih->fd, ih->data);