* serial.c (poll_serial): Fix for #79073, based on the patch by
Leszek Ciesielski, without introducing a GNU libc-ism.
(write_serial): Handle EINTR here as well.
svn path=/trunk/mono/; revision=71514
+2007-01-23 Miguel de Icaza <miguel@novell.com>
+
+ * serial.c (poll_serial): Fix for #79073, based on the patch by
+ Leszek Ciesielski, without introducing a GNU libc-ism.
+ (write_serial): Handle EINTR here as well.
+
2006-11-30 Jonathan Pryor <jonpryor@vt.edu>
* map.c: _cnm_return_val_if_overflow() should be a no-op unless DEBUG is
ufd.fd = fd;
ufd.events = POLLHUP | POLLOUT | POLLERR;
- poll (&ufd, 1, timeout);
+ while (poll (&ufd, 1, timeout) == -1 && errno == EINTR){
+
+ }
if ((ufd.revents & POLLOUT) != POLLOUT) {
return;
pinfo.events = POLLIN;
pinfo.revents = 0;
- if (poll (&pinfo, 1, timeout) == -1) {
+ while (poll (&pinfo, 1, timeout) == -1 && errno == EINTR) {
/* EINTR is an OK condition, we should not throw in the upper layer an IOException */
- if (errno == EINTR)
+ if (errno != EINTR){
+ *error = -1;
return FALSE;
- *error = -1;
- return FALSE;
+ }
}
return (pinfo.revents & POLLIN) != 0 ? 1 : 0;