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/gnu-v2-abi.c | |
parent | e133de4984cef9acb32fd756c607aa2fa1d090fb (diff) | |
download | gdb-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/gnu-v2-abi.c')
-rw-r--r-- | gdb/gnu-v2-abi.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gdb/gnu-v2-abi.c b/gdb/gnu-v2-abi.c index c0200b2..cdcd3d5 100644 --- a/gdb/gnu-v2-abi.c +++ b/gdb/gnu-v2-abi.c @@ -189,7 +189,7 @@ gnuv2_value_rtti_type (struct value *v, int *full, LONGEST *top, int *using_enc) struct type *rtti_type; CORE_ADDR vtbl; struct bound_minimal_symbol minsym; - char *demangled_name, *p; + char *p; const char *linkage_name; struct type *btype; struct type *known_type_vptr_basetype; @@ -248,14 +248,15 @@ gnuv2_value_rtti_type (struct value *v, int *full, LONGEST *top, int *using_enc) return NULL; /* If we just skip the prefix, we get screwed by namespaces. */ - demangled_name=gdb_demangle(linkage_name,DMGL_PARAMS|DMGL_ANSI); - p = strchr (demangled_name, ' '); + gdb::unique_xmalloc_ptr<char> demangled_name + = gdb_demangle(linkage_name,DMGL_PARAMS|DMGL_ANSI); + p = strchr (demangled_name.get (), ' '); if (p) *p = '\0'; /* Lookup the type for the name. */ /* FIXME: chastain/2003-11-26: block=NULL is bogus. See pr gdb/1465. */ - rtti_type = cp_lookup_rtti_type (demangled_name, NULL); + rtti_type = cp_lookup_rtti_type (demangled_name.get (), NULL); if (rtti_type == NULL) return NULL; |