diff options
author | Daniel Jacobowitz <drow@false.org> | 2006-06-10 18:24:32 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2006-06-10 18:24:32 +0000 |
commit | 98739726e2765867341ca3cae4631b22c8cf8143 (patch) | |
tree | 41c2bb4e8cc8e4c8c99aabfa92b0e331b019391d | |
parent | b3882df925df241bb074fcf65e6964a15492b88c (diff) | |
download | gdb-98739726e2765867341ca3cae4631b22c8cf8143.zip gdb-98739726e2765867341ca3cae4631b22c8cf8143.tar.gz gdb-98739726e2765867341ca3cae4631b22c8cf8143.tar.bz2 |
* mingw-hdep.c (gdb_select): Always check for NULL fd sets
before calling FD_ISSET. Correct check for exceptfds which
previously tested writefds.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/mingw-hdep.c | 15 |
2 files changed, 14 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 75a39ab..3ddea3c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2006-06-10 Daniel Jacobowitz <dan@codesourcery.com> + + * mingw-hdep.c (gdb_select): Always check for NULL fd sets + before calling FD_ISSET. Correct check for exceptfds which + previously tested writefds. + 2006-06-09 Daniel Jacobowitz <dan@codesourcery.com> Julian Brown <julian@codesourcery.com> diff --git a/gdb/mingw-hdep.c b/gdb/mingw-hdep.c index bb0f50a..2b92a1c 100644 --- a/gdb/mingw-hdep.c +++ b/gdb/mingw-hdep.c @@ -105,8 +105,8 @@ gdb_select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, if something starts using it. */ gdb_assert (!writefds || !FD_ISSET (fd, writefds)); - if (!FD_ISSET (fd, readfds) - && !FD_ISSET (fd, exceptfds)) + if ((!readfds || !FD_ISSET (fd, readfds)) + && (!exceptfds || !FD_ISSET (fd, exceptfds))) continue; h = (HANDLE) _get_osfhandle (fd); @@ -124,13 +124,13 @@ gdb_select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, except = never_handle; } - if (FD_ISSET (fd, readfds)) + if (readfds && FD_ISSET (fd, readfds)) { gdb_assert (num_handles < MAXIMUM_WAIT_OBJECTS); handles[num_handles++] = read; } - if (FD_ISSET (fd, exceptfds)) + if (exceptfds && FD_ISSET (fd, exceptfds)) { gdb_assert (num_handles < MAXIMUM_WAIT_OBJECTS); handles[num_handles++] = except; @@ -169,10 +169,11 @@ gdb_select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, HANDLE fd_h; struct serial *scb; - if (!FD_ISSET (fd, readfds) && !FD_ISSET (fd, writefds)) + if ((!readfds || !FD_ISSET (fd, readfds)) + && (!exceptfds || !FD_ISSET (fd, exceptfds))) continue; - if (FD_ISSET (fd, readfds)) + if (readfds && FD_ISSET (fd, readfds)) { fd_h = handles[indx++]; /* This handle might be ready, even though it wasn't the handle @@ -183,7 +184,7 @@ gdb_select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, num_ready++; } - if (FD_ISSET (fd, exceptfds)) + if (exceptfds && FD_ISSET (fd, exceptfds)) { fd_h = handles[indx++]; /* This handle might be ready, even though it wasn't the handle |