[2/2] gdb: Use string_printf to format int fields instead of a fixed size buffer
Commit Message
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(-)
Comments
>>>>> "Andrew" == Andrew Burgess <andrew.burgess@embecosm.com> writes:
Andrew> This patch removes a FIXME comment from cli-out.c, now instead of
Andrew> formatting integers into a fixed size buffer we build a std::string
Andrew> and extract the formatted integer from that.
Andrew> The old code using a fixed size buffer was probably fine (the integer
Andrew> was not going to overflow it) and probably slightly more efficient
Andrew> (avoids building a std::string) however, given we already have utility
Andrew> code in GDB that will allow the 'FIXME' comment to be removed, it
Andrew> seems like an easy improvement.
Andrew> gdb/ChangeLog:
Andrew> * cli-out.c (cli_ui_out::do_field_int): Use string_printf rather
Andrew> than a fixed size buffer.
Thanks. This is ok.
Tom
@@ -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 */