aboutsummaryrefslogtreecommitdiff
path: root/gdb/objc-lang.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/objc-lang.c
parente133de4984cef9acb32fd756c607aa2fa1d090fb (diff)
downloadgdb-3456e70c9d69da8d62a0ea1f8c2e643648afc654.zip
gdb-3456e70c9d69da8d62a0ea1f8c2e643648afc654.tar.gz
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/objc-lang.c')
-rw-r--r--gdb/objc-lang.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c
index 077ac77..bc3a741 100644
--- a/gdb/objc-lang.c
+++ b/gdb/objc-lang.c
@@ -251,8 +251,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 = demangle_symbol (mangled, 0);
return *demangled != NULL;
@@ -260,7 +261,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;
/* See language.h. */
@@ -318,7 +320,7 @@ public:
/* See declaration of objc_language::demangle_symbol above. */
-char *
+gdb::unique_xmalloc_ptr<char>
objc_language::demangle_symbol (const char *mangled, int options) const
{
char *demangled, *cp;
@@ -376,7 +378,7 @@ objc_language::demangle_symbol (const char *mangled, int options) const
*cp++ = ']'; /* closing right brace */
*cp++ = 0; /* string terminator */
- return demangled;
+ return gdb::unique_xmalloc_ptr<char> (demangled);
}
else
return nullptr; /* Not an objc mangled name. */