Move FD_CLR above pInfo->read_input

The event fd may be invalidated by the pInfo->read_input call. If it is
invalidated, the subsequent FD_CLR call will segfault. Thus, the FD_CLR
call must precede the pInfo->read_input call.

Signed-off-by: Chase Douglas <chasedouglas@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
Chase Douglas 2009-11-09 22:54:39 -05:00 committed by Keith Packard
parent 982f6648fd
commit b5aa2e0a5f

View File

@ -263,13 +263,14 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
(FD_ISSET(pInfo->fd, &devicesWithInput) != 0)) { (FD_ISSET(pInfo->fd, &devicesWithInput) != 0)) {
int sigstate = xf86BlockSIGIO(); int sigstate = xf86BlockSIGIO();
pInfo->read_input(pInfo);
xf86UnblockSIGIO(sigstate);
/* /*
* Remove the descriptior from the set because more than one * Remove the descriptior from the set because more than one
* device may share the same file descriptor. * device may share the same file descriptor.
*/ */
FD_CLR(pInfo->fd, &devicesWithInput); FD_CLR(pInfo->fd, &devicesWithInput);
pInfo->read_input(pInfo);
xf86UnblockSIGIO(sigstate);
} }
pInfo = pInfo->next; pInfo = pInfo->next;
} }