and catch all exceptions from it.
* top.c (command_line_handler_continuation): Don't
call bpstat_do_action here.
+2008-05-05 Vladimir Prus <vladimir@codesourcery.com>
+
+ * inf-loop.c (inferior_event_handler): Call bpstat_do_action,
+ and catch all exceptions from it.
+ * top.c (command_line_handler_continuation): Don't
+ call bpstat_do_action here.
+
2008-05-04 Daniel Jacobowitz <dan@codesourcery.com>
* dwarf2read.c (struct dwarf2_cu): Add type_hash.
2008-05-04 Daniel Jacobowitz <dan@codesourcery.com>
* dwarf2read.c (struct dwarf2_cu): Add type_hash.
inferior_event_handler (enum inferior_event_type event_type,
gdb_client_data client_data)
{
inferior_event_handler (enum inferior_event_type event_type,
gdb_client_data client_data)
{
+ struct gdb_exception e;
int was_sync = 0;
switch (event_type)
{
int was_sync = 0;
switch (event_type)
{
was_sync = sync_execution;
async_enable_stdin ();
was_sync = sync_execution;
async_enable_stdin ();
+ /* If there's an error doing breakpoint commands, we don't
+ want to throw -- continuation might still do something. */
+ TRY_CATCH (e, RETURN_MASK_ALL)
+ {
+ bpstat_do_actions (&stop_bpstat);
+ }
/* If we were doing a multi-step (eg: step n, next n), but it
got interrupted by a breakpoint, still do the pending
continuations. The continuation itself is responsible for
/* If we were doing a multi-step (eg: step n, next n), but it
got interrupted by a breakpoint, still do the pending
continuations. The continuation itself is responsible for
- bpstat_do_actions (&stop_bpstat);
-
if (display_time)
{
long cmd_time = get_run_time () - time_at_cmd_start;
if (display_time)
{
long cmd_time = get_run_time () - time_at_cmd_start;