From d63095c426f704f75d943a7481189628403ed58f Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Tue, 20 Nov 2018 13:36:49 +0000 Subject: [PATCH] gdb: Use string_printf to format int fields instead of a fixed size buffer This patch removes a FIXME comment from cli-out.c, now instead of formatting integers into a fixed size buffer we build a std::string and extract the formatted integer from that. The old code using a fixed size buffer was probably fine (the integer was not going to overflow it) and probably slightly more efficient (avoids building a std::string) however, given we already have utility code in GDB that will allow the 'FIXME' comment to be removed, it seems like an easy improvement. gdb/ChangeLog: * cli-out.c (cli_ui_out::do_field_int): Use string_printf rather than a fixed size buffer. --- gdb/ChangeLog | 5 +++++ gdb/cli-out.c | 6 ++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 66fe9c9f28f..ddd93f246b6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2018-11-20 Andrew Burgess + + * cli-out.c (cli_ui_out::do_field_int): Use string_printf rather + than a fixed size buffer. + 2018-11-20 Andrew Burgess * breakpoint.c (print_one_breakpoint_location): Reduce whitespace, diff --git a/gdb/cli-out.c b/gdb/cli-out.c index 9ffd6f01577..7e3ee3e54c1 100644 --- a/gdb/cli-out.c +++ b/gdb/cli-out.c @@ -94,14 +94,12 @@ void cli_ui_out::do_field_int (int fldno, int width, ui_align alignment, const char *fldname, int value) { - char buffer[20]; /* FIXME: how many chars long a %d can become? */ - if (m_suppress_output) return; - xsnprintf (buffer, sizeof (buffer), "%d", value); + std::string str = string_printf ("%d", value); - do_field_string (fldno, width, alignment, fldname, buffer); + do_field_string (fldno, width, alignment, fldname, str.c_str ()); } /* used to omit a field */ -- 2.30.2