Index: gdb/tui/tui.c |
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c |
index 9ef3c309e3be6d2eb4c62a28eb48227032965174..27d51576e1b06508dc85fec8e588032fe4b069e4 100644 |
--- a/gdb/tui/tui.c |
+++ b/gdb/tui/tui.c |
@@ -1,6 +1,6 @@ |
/* General functions for the WDB TUI. |
- Copyright (C) 1998-2004, 2007-2012 Free Software Foundation, Inc. |
+ Copyright (C) 1998-2013 Free Software Foundation, Inc. |
Contributed by Hewlett-Packard Company. |
@@ -240,12 +240,17 @@ tui_rl_command_key (int count, int key) |
{ |
if (tui_commands[i].key == key) |
{ |
- /* Must save the command because it can be modified by |
- execute_command. */ |
- char *cmd = alloca (strlen (tui_commands[i].cmd) + 1); |
- |
- strcpy (cmd, tui_commands[i].cmd); |
- execute_command (cmd, TRUE); |
+ /* Insert the command in the readline buffer. |
+ Avoid calling the gdb command here since it creates |
+ a possible recursion on readline if prompt_for_continue |
+ is called (See PR 9584). The command will also appear |
+ in the readline history which turns out to be better. */ |
+ rl_insert_text (tui_commands[i].cmd); |
+ rl_newline (1, '\n'); |
+ |
+ /* Switch to gdb command mode while executing the command. |
+ This way the gdb's continue prompty will be displayed. */ |
+ tui_set_key_mode (TUI_ONE_COMMAND_MODE); |
return 0; |
} |
} |
@@ -284,7 +289,7 @@ static int |
tui_rl_startup_hook (void) |
{ |
rl_already_prompted = 1; |
- if (tui_current_key_mode != TUI_COMMAND_MODE) |
+ if (tui_current_key_mode != TUI_COMMAND_MODE && immediate_quit == 0) |
tui_set_key_mode (TUI_SINGLE_KEY_MODE); |
tui_redisplay_readline (); |
return 0; |
@@ -527,7 +532,7 @@ tui_reset (void) |
#endif |
void |
-tui_show_source (const char *file, int line) |
+tui_show_source (const char *fullname, int line) |
{ |
struct symtab_and_line cursal = get_current_source_symtab_and_line (); |
@@ -535,7 +540,7 @@ tui_show_source (const char *file, int line) |
tui_add_win_to_layout (SRC_WIN); |
tui_update_source_windows_with_line (cursal.symtab, line); |
- tui_update_locator_filename (file); |
+ tui_update_locator_fullname (fullname); |
} |
void |