From: Tom Tromey Date: Mon, 16 Oct 2017 23:36:32 +0000 (-0600) Subject: Remove cleanups from break-catch-syscall.c X-Git-Tag: users/ARM/embedded-binutils-master-2017q4~517 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3d415c26bad3a15eed00d2ddf85c4268df77a4cc;p=external%2Fbinutils.git Remove cleanups from break-catch-syscall.c This removes the remaining cleanups from break-catch-syscall.c by storing temporary strings in a vector. ChangeLog 2017-10-19 Tom Tromey * break-catch-syscall.c (catch_syscall_completer): Use std::string, gdb::unique_xmalloc_ptr. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 49d67bd..70725ee 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2017-10-19 Tom Tromey + * break-catch-syscall.c (catch_syscall_completer): Use + std::string, gdb::unique_xmalloc_ptr. + +2017-10-19 Tom Tromey + * infcall.c (call_function_by_hand_dummy): Use std::string. 2017-10-19 Tom Tromey diff --git a/gdb/break-catch-syscall.c b/gdb/break-catch-syscall.c index 01e761c..82d3e36 100644 --- a/gdb/break-catch-syscall.c +++ b/gdb/break-catch-syscall.c @@ -560,9 +560,7 @@ catch_syscall_completer (struct cmd_list_element *cmd, const char *text, const char *word) { struct gdbarch *gdbarch = get_current_arch (); - struct cleanup *cleanups = make_cleanup (null_cleanup, NULL); - const char **group_list = NULL; - const char **syscall_list = NULL; + gdb::unique_xmalloc_ptr group_list; const char *prefix; int i; @@ -575,34 +573,37 @@ catch_syscall_completer (struct cmd_list_element *cmd, if (startswith (prefix, "g:") || startswith (prefix, "group:")) { /* Perform completion inside 'group:' namespace only. */ - group_list = get_syscall_group_names (gdbarch); + group_list.reset (get_syscall_group_names (gdbarch)); if (group_list != NULL) - complete_on_enum (tracker, group_list, word, word); + complete_on_enum (tracker, group_list.get (), word, word); } else { /* Complete with both, syscall names and groups. */ - syscall_list = get_syscall_names (gdbarch); - group_list = get_syscall_group_names (gdbarch); + gdb::unique_xmalloc_ptr syscall_list + (get_syscall_names (gdbarch)); + group_list.reset (get_syscall_group_names (gdbarch)); + + const char **group_ptr = group_list.get (); + + /* Hold on to strings while we're using them. */ + std::vector holders; /* Append "group:" prefix to syscall groups. */ - for (i = 0; group_list[i] != NULL; i++) + for (i = 0; group_ptr[i] != NULL; i++) { - char *prefixed_group = xstrprintf ("group:%s", group_list[i]); + std::string prefixed_group = string_printf ("group:%s", + group_ptr[i]); - group_list[i] = prefixed_group; - make_cleanup (xfree, prefixed_group); + group_ptr[i] = prefixed_group.c_str (); + holders.push_back (std::move (prefixed_group)); } if (syscall_list != NULL) - complete_on_enum (tracker, syscall_list, word, word); + complete_on_enum (tracker, syscall_list.get (), word, word); if (group_list != NULL) - complete_on_enum (tracker, group_list, word, word); + complete_on_enum (tracker, group_ptr, word, word); } - - xfree (syscall_list); - xfree (group_list); - do_cleanups (cleanups); } static void