PR gdb/8677
authorAndreas Schwab <schwab@linux-m68k.org>
Wed, 25 May 2011 07:59:04 +0000 (07:59 +0000)
committerAndreas Schwab <schwab@linux-m68k.org>
Wed, 25 May 2011 07:59:04 +0000 (07:59 +0000)
* event-loop.c (handle_file_event): Don't handle POLLHUP as error.

gdb/ChangeLog
gdb/event-loop.c

index 409426360a7280880f9d86748ca4bebe98a152d4..81cdddcfe13bb01aca90bb9d6091e6aaf6d96acf 100644 (file)
@@ -1,3 +1,8 @@
+2011-05-25  Andreas Schwab  <schwab@redhat.com>
+
+       PR gdb/8677
+       * event-loop.c (handle_file_event): Don't handle POLLHUP as error.
+
 2011-05-24  Keith Seitz  <keiths@redhat.com>
 
        PR breakpoint/12803
index 617835feb05942def7dc9964353a3fc885545033..b6702f868d366d501889fff40b2f7e010ecbb6e9 100644 (file)
@@ -759,7 +759,6 @@ handle_file_event (event_data data)
   int mask;
 #ifdef HAVE_POLL
   int error_mask;
-  int error_mask_returned;
 #endif
   int event_file_desc = data.integer;
 
@@ -783,22 +782,19 @@ handle_file_event (event_data data)
          if (use_poll)
            {
 #ifdef HAVE_POLL
+             /* POLLHUP means EOF, but can be combined with POLLIN to
+                signal more data to read.  */
              error_mask = POLLHUP | POLLERR | POLLNVAL;
-             mask = (file_ptr->ready_mask & file_ptr->mask) |
-               (file_ptr->ready_mask & error_mask);
-             error_mask_returned = mask & error_mask;
+             mask = file_ptr->ready_mask & (file_ptr->mask | error_mask);
 
-             if (error_mask_returned != 0)
+             if ((mask & (POLLERR | POLLNVAL)) != 0)
                {
                  /* Work in progress.  We may need to tell somebody
                     what kind of error we had.  */
-                 if (error_mask_returned & POLLHUP)
-                   printf_unfiltered (_("Hangup detected on fd %d\n"),
-                                      file_ptr->fd);
-                 if (error_mask_returned & POLLERR)
+                 if (mask & POLLERR)
                    printf_unfiltered (_("Error detected on fd %d\n"),
                                       file_ptr->fd);
-                 if (error_mask_returned & POLLNVAL)
+                 if (mask & POLLNVAL)
                    printf_unfiltered (_("Invalid or non-`poll'able fd %d\n"),
                                       file_ptr->fd);
                  file_ptr->error = 1;