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]

Re: MI problem


How about we commit this without the current_interp_named_p change for
now?  Normally we'd need to use a cleanup to save and restore uiout,
but nothing here can throw exceptions AFAICT, so we're OK with the way
you've done it.

OK, I'm happy to do that.


Am I OK to commit the attached to both branches?

Andrew
2005-11-18  Andrew Stubbs  <andrew.stubbs@st.com>

	* mi/mi-main.c (mi_load_progress): Ensure the use of the correct mi
	uiout for the duration of the function.

Index: src/gdb/mi/mi-main.c
===================================================================
--- src.orig/gdb/mi/mi-main.c	2005-11-17 19:47:42.000000000 +0000
+++ src/gdb/mi/mi-main.c	2005-11-18 16:16:38.000000000 +0000
@@ -1365,9 +1365,18 @@ mi_load_progress (const char *section_na
   static struct timeval last_update;
   static char *previous_sect_name = NULL;
   int new_section;
+  struct ui_out *saved_uiout;
 
-  if (!current_interp_named_p (INTERP_MI)
-      && !current_interp_named_p (INTERP_MI1))
+  /* This function is called through deprecated_show_load_progress
+     which means uiout may not be correct.  Fix it for the duration
+     of this function.  */
+  saved_uiout = uiout;
+
+  if (current_interp_named_p (INTERP_MI))
+    uiout = mi_out_new (2);
+  else if (current_interp_named_p (INTERP_MI1))
+    uiout = mi_out_new (1);
+  else
     return;
 
   update_threshold.tv_sec = 0;
@@ -1424,6 +1433,9 @@ mi_load_progress (const char *section_na
       fputs_unfiltered ("\n", raw_stdout);
       gdb_flush (raw_stdout);
     }
+
+  xfree (uiout);
+  uiout = saved_uiout;
 }
 
 void

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