This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Always clear execution_control_state before handling an event.


Unlike in long gone past times, nothing in execution_control_state is
supposed to be persistent across events nowadays.  Let's clear ecss at
each iteration of wait_for_inferior to make sure we don't end up with
anything stale.

Applied.

gdb/
2012-05-28  Pedro Alves  <palves@redhat.com>

	* infrun.c (wait_for_inferior): Move ecss and ecs locals to the
	block that uses them.  Clear ecss before handling each event.
---
 gdb/infrun.c |    9 ++++-----
 1 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/gdb/infrun.c b/gdb/infrun.c
index 50ad217..45b1fe7 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -2694,8 +2694,6 @@ void
 wait_for_inferior (void)
 {
   struct cleanup *old_cleanups;
-  struct execution_control_state ecss;
-  struct execution_control_state *ecs;
 
   if (debug_infrun)
     fprintf_unfiltered
@@ -2704,13 +2702,14 @@ wait_for_inferior (void)
   old_cleanups =
     make_cleanup (delete_step_thread_step_resume_breakpoint_cleanup, NULL);
 
-  ecs = &ecss;
-  memset (ecs, 0, sizeof (*ecs));
-
   while (1)
     {
+      struct execution_control_state ecss;
+      struct execution_control_state *ecs = &ecss;
       struct cleanup *old_chain;
 
+      memset (ecs, 0, sizeof (*ecs));
+
       overlay_cache_invalid = 1;
 
       if (deprecated_target_wait_hook)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]