diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 18ae7f4c32..45c8605e17 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2012-05-24 Pedro Alves + + PR tui/14159 + + * tui/tui-hooks.c (tui_query_hook): Pre-compute the question + string, instead of reusing the va_list argument. + 2012-05-24 Tom Tromey * cp-support.h (cp_finalize_namespace, cp_initialize_namespace): diff --git a/gdb/tui/tui-hooks.c b/gdb/tui/tui-hooks.c index 17a95937c1..4d1e06346f 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; }