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.
This commit is contained in:
Tom Tromey 2021-10-04 08:44:22 -06:00
parent e133de4984
commit 3456e70c9d
23 changed files with 118 additions and 136 deletions

View file

@ -160,7 +160,6 @@ is_cplus_marker (int c)
static void
demangle_command (const char *args, int from_tty)
{
char *demangled;
const char *name;
const char *arg_start;
int processing_args = 1;
@ -202,12 +201,10 @@ demangle_command (const char *args, int from_tty)
else
lang = current_language;
demangled = language_demangle (lang, name, DMGL_ANSI | DMGL_PARAMS);
gdb::unique_xmalloc_ptr<char> demangled
= language_demangle (lang, name, DMGL_ANSI | DMGL_PARAMS);
if (demangled != NULL)
{
printf_filtered ("%s\n", demangled);
xfree (demangled);
}
printf_filtered ("%s\n", demangled.get ());
else
error (_("Can't demangle \"%s\""), name);
}