* remote.c (remote_wait): Handle SIGINT between packets.
authorDaniel Jacobowitz <drow@false.org>
Wed, 23 Jan 2008 20:43:30 +0000 (20:43 +0000)
committerDaniel Jacobowitz <drow@false.org>
Wed, 23 Jan 2008 20:43:30 +0000 (20:43 +0000)
(remote_async_wait): Likewise.

gdb/ChangeLog
gdb/remote.c

index 3468f049c0eb58659c60a99a407587d15332ff3a..9ab0df42a66d6fdf7a124d591462eb5d8c8e940f 100644 (file)
@@ -1,3 +1,8 @@
+2008-01-23  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * remote.c (remote_wait): Handle SIGINT between packets.
+       (remote_async_wait): Likewise.
+
 2008-01-23  Vladimir Prus  <vladimir@codesourcery.com>
            Chris Demetriou  <cgd@google.com>
 
index eefea2e6a6dc9a6c8909fa1de6185d88646506eb..12397716717a58f1b908f3e6cb2a5efe35a964bb 100644 (file)
@@ -3204,6 +3204,13 @@ remote_wait (ptid_t ptid, struct target_waitstatus *status)
       char *buf, *p;
 
       ofunc = signal (SIGINT, remote_interrupt);
+      /* If the user hit C-c before this packet, or between packets,
+        pretend that it was hit right here.  */
+      if (quit_flag)
+       {
+         quit_flag = 0;
+         remote_interrupt (SIGINT);
+       }
       getpkt (&rs->buf, &rs->buf_size, 1);
       signal (SIGINT, ofunc);
 
@@ -3413,7 +3420,16 @@ remote_async_wait (ptid_t ptid, struct target_waitstatus *status)
       char *buf, *p;
 
       if (!target_is_async_p ())
-       ofunc = signal (SIGINT, remote_interrupt);
+       {
+         ofunc = signal (SIGINT, remote_interrupt);
+         /* If the user hit C-c before this packet, or between packets,
+            pretend that it was hit right here.  */
+         if (quit_flag)
+           {
+             quit_flag = 0;
+             remote_interrupt (SIGINT);
+           }
+       }
       /* FIXME: cagney/1999-09-27: If we're in async mode we should
          _never_ wait for ever -> test on target_is_async_p().
          However, before we do that we need to ensure that the caller