aboutsummaryrefslogtreecommitdiff
path: root/gdb/guile
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-08-13 10:47:32 -0600
committerTom Tromey <tom@tromey.com>2017-09-09 13:46:08 -0600
commitca5909c7de7353d8005bf8fdcc020b8f14cc1603 (patch)
tree7f6a92c8c64d4154b16b8a30d6bd7fdde6fe19f3 /gdb/guile
parente6a2252ac3e3dc748df33b38ac66cd78c80be5ad (diff)
downloadgdb-ca5909c7de7353d8005bf8fdcc020b8f14cc1603.zip
gdb-ca5909c7de7353d8005bf8fdcc020b8f14cc1603.tar.gz
gdb-ca5909c7de7353d8005bf8fdcc020b8f14cc1603.tar.bz2
Remove make_cleanup_ui_out_redirect_pop
This patch introduces ui_out_redirect_pop. All uses of make_cleanup_ui_out_redirect_pop are replaced with this new class. ChangeLog 2017-09-09 Tom Tromey <tom@tromey.com> * mi/mi-interp.c (mi_user_selected_context_changed): Use ui_out_redirect_pop. * guile/scm-ports.c (ioscm_with_output_to_port_worker): Use ui_out_redirect_pop. * utils.c (do_ui_out_redirect_pop) (make_cleanup_ui_out_redirect_pop): Remove. * top.c (execute_command_to_string): Use ui_out_redirect_pop. * utils.h (make_cleanup_ui_out_redirect_pop): Remove. * ui-out.h (ui_out_redirect_pop): New class.
Diffstat (limited to 'gdb/guile')
-rw-r--r--gdb/guile/scm-ports.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/gdb/guile/scm-ports.c b/gdb/guile/scm-ports.c
index 735abc2..78187c4 100644
--- a/gdb/guile/scm-ports.c
+++ b/gdb/guile/scm-ports.c
@@ -26,6 +26,7 @@
#include "top.h"
#include "target.h"
#include "guile-internal.h"
+#include "common/gdb_optional.h"
#ifdef HAVE_POLL
#if defined (HAVE_POLL_H)
@@ -477,17 +478,20 @@ ioscm_with_output_to_port_worker (SCM port, SCM thunk, enum oport oport,
scoped_restore save_file = make_scoped_restore (oport == GDB_STDERR
? &gdb_stderr : &gdb_stdout);
- if (oport == GDB_STDERR)
- gdb_stderr = port_file.get ();
- else
- {
- current_uiout->redirect (port_file.get ());
- make_cleanup_ui_out_redirect_pop (current_uiout);
+ {
+ gdb::optional<ui_out_redirect_pop> redirect_popper;
+ if (oport == GDB_STDERR)
+ gdb_stderr = port_file.get ();
+ else
+ {
+ current_uiout->redirect (port_file.get ());
+ redirect_popper.emplace (current_uiout);
- gdb_stdout = port_file.get ();
- }
+ gdb_stdout = port_file.get ();
+ }
- result = gdbscm_safe_call_0 (thunk, NULL);
+ result = gdbscm_safe_call_0 (thunk, NULL);
+ }
do_cleanups (cleanups);