From 570bc7936f5aa9299eee20ba3e170b44efd6c98f Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sun, 3 Oct 2021 08:16:50 -0600 Subject: [PATCH] Use std::string in print_one_catch_syscall This changes print_one_catch_syscall to use std::string, removing a bit of manual memory management. --- gdb/break-catch-syscall.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/gdb/break-catch-syscall.c b/gdb/break-catch-syscall.c index 32736f024ad..3d3b275c31e 100644 --- a/gdb/break-catch-syscall.c +++ b/gdb/break-catch-syscall.c @@ -250,28 +250,24 @@ print_one_catch_syscall (struct breakpoint *b, if (!c->syscalls_to_be_caught.empty ()) { - char *text = xstrprintf ("%s", ""); + std::string text; + bool first = true; for (int iter : c->syscalls_to_be_caught) { - char *previous_text = text; struct syscall s; get_syscall_by_number (gdbarch, iter, &s); + if (!first) + text += ", "; + first = false; + if (s.name != NULL) - text = xstrprintf ("%s%s, ", text, s.name); + text += s.name; else - text = xstrprintf ("%s%d, ", text, iter); - - /* We have to xfree previous_text because xstrprintf dynamically - allocates new space for text on every call. */ - xfree (previous_text); + text += std::to_string (iter); } - /* Remove the last comma. */ - text[strlen (text) - 2] = '\0'; - uiout->field_string ("what", text); - /* xfree last text. */ - xfree (text); + uiout->field_string ("what", text.c_str ()); } else uiout->field_string ("what", "", metadata_style.style ()); -- 2.30.2