aboutsummaryrefslogtreecommitdiff
path: root/gdb/utils.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2021-10-04 08:44:22 -0600
committerTom Tromey <tromey@adacore.com>2021-10-04 13:45:38 -0600
commit3456e70c9d69da8d62a0ea1f8c2e643648afc654 (patch)
tree7959a8dc460685d2e8e3197478eddb4430d48708 /gdb/utils.c
parente133de4984cef9acb32fd756c607aa2fa1d090fb (diff)
downloadfsf-binutils-gdb-3456e70c9d69da8d62a0ea1f8c2e643648afc654.zip
fsf-binutils-gdb-3456e70c9d69da8d62a0ea1f8c2e643648afc654.tar.gz
fsf-binutils-gdb-3456e70c9d69da8d62a0ea1f8c2e643648afc654.tar.bz2
Use unique_xmalloc_ptr<char> when demangling
I noticed that some methods in language_defn could use unique_xmalloc_ptr<char> rather than a plain 'char *'. This patch implements this change, fixing up the fallout and changing gdb_demangle to also return this type. In one spot, std::string is used to simplify some related code, and in another, an auto_obstack is used to avoid manual management. Regression tested on x86-64 Fedora 34.
Diffstat (limited to 'gdb/utils.c')
-rw-r--r--gdb/utils.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/gdb/utils.c b/gdb/utils.c
index f6f90d7..5486c33 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -2345,8 +2345,6 @@ void
fprintf_symbol_filtered (struct ui_file *stream, const char *name,
enum language lang, int arg_mode)
{
- char *demangled;
-
if (name != NULL)
{
/* If user wants to see raw output, no problem. */
@@ -2356,12 +2354,9 @@ fprintf_symbol_filtered (struct ui_file *stream, const char *name,
}
else
{
- demangled = language_demangle (language_def (lang), name, arg_mode);
- fputs_filtered (demangled ? demangled : name, stream);
- if (demangled != NULL)
- {
- xfree (demangled);
- }
+ gdb::unique_xmalloc_ptr<char> demangled
+ = language_demangle (language_def (lang), name, arg_mode);
+ fputs_filtered (demangled ? demangled.get () : name, stream);
}
}
}