summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2018-11-20 13:36:49 +0000
committerAndrew Burgess <andrew.burgess@embecosm.com>2018-11-20 23:01:42 +0000
commitd63095c426f704f75d943a7481189628403ed58f (patch)
treee3974ee4d9d3fa46da651e1de06834fba41f3fbd
parent1871a62daf0561da0880ba1ad39e8191bc3cf1ac (diff)
downloadbinutils-gdb-d63095c426f704f75d943a7481189628403ed58f.tar.gz
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.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/cli-out.c6
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,5 +1,10 @@
2018-11-20 Andrew Burgess <andrew.burgess@embecosm.com>
+ * cli-out.c (cli_ui_out::do_field_int): Use string_printf rather
+ than a fixed size buffer.
+
+2018-11-20 Andrew Burgess <andrew.burgess@embecosm.com>
+
* breakpoint.c (print_one_breakpoint_location): Reduce whitespace,
and remove insertion of extra spaces in GDB's output.
* cli-out.c (cli_ui_out::do_field_fmt): Update header comment.
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 */