aboutsummaryrefslogtreecommitdiff
path: root/gdb/tui/tui-hooks.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2012-05-24 15:54:57 +0000
committerPedro Alves <palves@redhat.com>2012-05-24 15:54:57 +0000
commitb09846a918b74f0371149f730f8b391548b11a8d (patch)
tree500e64b3c7699c52fb8c23aaad473a0c7eb6708d /gdb/tui/tui-hooks.c
parent16224acd5cc40286a5e9b95704481a36b36fe6bd (diff)
downloadgdb-b09846a918b74f0371149f730f8b391548b11a8d.zip
gdb-b09846a918b74f0371149f730f8b391548b11a8d.tar.gz
gdb-b09846a918b74f0371149f730f8b391548b11a8d.tar.bz2
2012-05-24 Pedro Alves <palves@redhat.com>
PR tui/14159 * tui/tui-hooks.c (tui_query_hook): Pre-compute the question string, instead of reusing the va_list argument.
Diffstat (limited to 'gdb/tui/tui-hooks.c')
-rw-r--r--gdb/tui/tui-hooks.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gdb/tui/tui-hooks.c b/gdb/tui/tui-hooks.c
index 17a9593..4d1e063 100644
--- a/gdb/tui/tui-hooks.c
+++ b/gdb/tui/tui-hooks.c
@@ -69,6 +69,13 @@ tui_query_hook (const char *msg, va_list argp)
int retval;
int ans2;
int answer;
+ char *question;
+ struct cleanup *old_chain;
+
+ /* Format the question outside of the loop, to avoid reusing
+ ARGP. */
+ question = xstrvprintf (msg, argp);
+ old_chain = make_cleanup (xfree, question);
echo ();
while (1)
@@ -76,7 +83,7 @@ tui_query_hook (const char *msg, va_list argp)
wrap_here (""); /* Flush any buffered output. */
gdb_flush (gdb_stdout);
- vfprintf_filtered (gdb_stdout, msg, argp);
+ fputs_filtered (question, gdb_stdout);
printf_filtered (_("(y or n) "));
wrap_here ("");
@@ -113,6 +120,8 @@ tui_query_hook (const char *msg, va_list argp)
printf_filtered (_("Please answer y or n.\n"));
}
noecho ();
+
+ do_cleanups (old_chain);
return retval;
}