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>
(cherry picked from commit b5aa2e0a5f)
This commit is contained in:
Chase Douglas 2009-11-09 22:54:39 -05:00 committed by Peter Hutterer
parent a2e4bcc2a0
commit e6872c89bc
1 changed files with 3 additions and 2 deletions

View File

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