mi_load_progress: Restore current_uiout using a scoped_restore
authorSimon Marchi <simon.marchi@ericsson.com>
Sat, 16 Sep 2017 11:45:56 +0000 (13:45 +0200)
committerSimon Marchi <simon.marchi@ericsson.com>
Sat, 16 Sep 2017 11:45:56 +0000 (13:45 +0200)
Simply use a scoped_restore instead of manually saving and restoring
current_uiout.

gdb/ChangeLog:

* mi/mi-main.c (mi_load_progress): Restore current_uiout using a
scoped_restore.

gdb/ChangeLog
gdb/mi/mi-main.c

index a7a87ee797d2850a1d543c59b1ebe09c06c0a9ab..9ee44fbca891081ab711640f5d8551ec50dfd709 100644 (file)
@@ -1,3 +1,8 @@
+2017-09-16  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * mi/mi-main.c (mi_load_progress): Restore current_uiout using a
+       scoped_restore.
+
 2017-09-16  Simon Marchi  <simon.marchi@ericsson.com>
 
        * mi/mi-main.c (mi_load_progress): Make uiout variable
index 0359dc123fb138a390d4066dd708c727eacc2fc7..c06ef18b415243506e5cf276faa42fe091fbb67b 100644 (file)
@@ -2324,13 +2324,11 @@ mi_load_progress (const char *section_name,
   static steady_clock::time_point last_update;
   static char *previous_sect_name = NULL;
   int new_section;
-  struct ui_out *saved_uiout;
   struct mi_interp *mi = (struct mi_interp *) current_interpreter ();
 
   /* 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 = current_uiout;
 
   std::unique_ptr<ui_out> uiout;
 
@@ -2344,7 +2342,8 @@ mi_load_progress (const char *section_name,
   else
     return;
 
-  current_uiout = uiout.get ();
+  scoped_restore save_uiout
+    = make_scoped_restore (&current_uiout, uiout.get ());
 
   new_section = (previous_sect_name ?
                 strcmp (previous_sect_name, section_name) : 1);
@@ -2386,8 +2385,6 @@ mi_load_progress (const char *section_name,
       fputs_unfiltered ("\n", mi->raw_stdout);
       gdb_flush (mi->raw_stdout);
     }
-
-  current_uiout = saved_uiout;
 }
 
 static void