diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/utils.c | 14 |
2 files changed, 18 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0de7a6d..595a43c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2016-04-12 Pedro Alves <palves@redhat.com> + * utils.c (vwarning, internal_vproblem): Use + make_cleanup_restore_target_terminal and + target_terminal_ours_for_output. + +2016-04-12 Pedro Alves <palves@redhat.com> + * infcmd.c (post_create_inferior, prepare_one_step): Use target_terminal_ours_for_output instead of target_terminal_ours. diff --git a/gdb/utils.c b/gdb/utils.c index 3c7a29c..e44e76c 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -532,8 +532,13 @@ vwarning (const char *string, va_list args) (*deprecated_warning_hook) (string, args); else { + struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); + if (target_supports_terminal_ours ()) - target_terminal_ours (); + { + make_cleanup_restore_target_terminal (); + target_terminal_ours_for_output (); + } if (filtered_printing_initialized ()) wrap_here (""); /* Force out any buffered output. */ gdb_flush (gdb_stdout); @@ -541,6 +546,8 @@ vwarning (const char *string, va_list args) fputs_unfiltered (warning_pre_print, gdb_stderr); vfprintf_unfiltered (gdb_stderr, string, args); fprintf_unfiltered (gdb_stderr, "\n"); + + do_cleanups (old_chain); } } @@ -738,7 +745,10 @@ internal_vproblem (struct internal_problem *problem, /* Try to get the message out and at the start of a new line. */ if (target_supports_terminal_ours ()) - target_terminal_ours (); + { + make_cleanup_restore_target_terminal (); + target_terminal_ours_for_output (); + } if (filtered_printing_initialized ()) begin_line (); |