diff --git a/src/gpio/gpio.c b/src/gpio/gpio.c index bbcccba..78327d8 100644 --- a/src/gpio/gpio.c +++ b/src/gpio/gpio.c @@ -151,6 +151,10 @@ mraa_gpio_wait_interrupt(int fd) unsigned char c; struct pollfd pfd; + if (fd <= 0) { + return MRAA_ERROR_INVALID_RESOURCE; + } + // setup poll on POLLPRI pfd.fd = fd; pfd.events = POLLPRI; @@ -159,10 +163,6 @@ mraa_gpio_wait_interrupt(int fd) lseek (fd, 0, SEEK_SET); read (fd, &c, 1); - if (fd <= 0) { - return MRAA_ERROR_INVALID_RESOURCE; - } - // Wait for it forever or until pthread_cancel // poll is a cancelable point like sleep() int x = poll (&pfd, 1, -1);