From b09846a918b74f0371149f730f8b391548b11a8d Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Thu, 24 May 2012 15:54:57 +0000 Subject: [PATCH] 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. --- gdb/ChangeLog | 7 +++++++ gdb/tui/tui-hooks.c | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) 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; }