Make error usable earlier

error (and other exception-throwing functions) are callable from the
first line of captured_main, but the exception printing code will
crash if called before the first call to set_width.  This commit makes
the exception printing code usable from the moment gdb_stderr is set
up.

gdb/ChangeLog:

	* exceptions.c (print_flush): Protect calls to
	target_terminal_ours and wrap_here.
This commit is contained in:
Gary Benson 2014-08-05 13:25:48 +01:00
parent 2437fd32f1
commit 5df4399815
2 changed files with 10 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2014-08-29 Gary Benson <gbenson@redhat.com>
* exceptions.c (print_flush): Protect calls to
target_terminal_ours and wrap_here.
2014-08-29 Gary Benson <gbenson@redhat.com> 2014-08-29 Gary Benson <gbenson@redhat.com>
* utils.h (filtered_printing_initialized): New declaration. * utils.h (filtered_printing_initialized): New declaration.

View File

@ -239,7 +239,9 @@ print_flush (void)
if (deprecated_error_begin_hook) if (deprecated_error_begin_hook)
deprecated_error_begin_hook (); deprecated_error_begin_hook ();
target_terminal_ours ();
if (target_supports_terminal_ours ())
target_terminal_ours ();
/* We want all output to appear now, before we print the error. We /* We want all output to appear now, before we print the error. We
have 3 levels of buffering we have to flush (it's possible that have 3 levels of buffering we have to flush (it's possible that
@ -247,7 +249,8 @@ print_flush (void)
too): */ too): */
/* 1. The _filtered buffer. */ /* 1. The _filtered buffer. */
wrap_here (""); if (filtered_printing_initialized ())
wrap_here ("");
/* 2. The stdio buffer. */ /* 2. The stdio buffer. */
gdb_flush (gdb_stdout); gdb_flush (gdb_stdout);