diff options
author | Tom Tromey <tromey@adacore.com> | 2021-10-04 08:44:22 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2021-10-04 13:45:38 -0600 |
commit | 3456e70c9d69da8d62a0ea1f8c2e643648afc654 (patch) | |
tree | 7959a8dc460685d2e8e3197478eddb4430d48708 /gdb/d-lang.c | |
parent | e133de4984cef9acb32fd756c607aa2fa1d090fb (diff) | |
download | binutils-3456e70c9d69da8d62a0ea1f8c2e643648afc654.zip binutils-3456e70c9d69da8d62a0ea1f8c2e643648afc654.tar.gz binutils-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/d-lang.c')
-rw-r--r-- | gdb/d-lang.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/gdb/d-lang.c b/gdb/d-lang.c index 6c9b730..c712053 100644 --- a/gdb/d-lang.c +++ b/gdb/d-lang.c @@ -51,7 +51,7 @@ d_main_name (void) /* Implements the la_demangle language_defn routine for language D. */ -char * +gdb::unique_xmalloc_ptr<char> d_demangle (const char *symbol, int options) { return gdb_demangle (symbol, options | DMGL_DLANG); @@ -126,8 +126,9 @@ public: } /* See language.h. */ - bool sniff_from_mangled_name (const char *mangled, - char **demangled) const override + bool sniff_from_mangled_name + (const char *mangled, + gdb::unique_xmalloc_ptr<char> *demangled) const override { *demangled = d_demangle (mangled, 0); return *demangled != NULL; @@ -135,7 +136,8 @@ public: /* See language.h. */ - char *demangle_symbol (const char *mangled, int options) const override + gdb::unique_xmalloc_ptr<char> demangle_symbol (const char *mangled, + int options) const override { return d_demangle (mangled, options); } |