diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/cp-support.c | 25 |
2 files changed, 14 insertions, 15 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 896c9fe..1fadba2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,9 @@ 2017-09-29 Tom Tromey <tom@tromey.com> + * cp-support.c (gdb_demangle): Use std::string. + +2017-09-29 Tom Tromey <tom@tromey.com> + * stack.c (parse_frame_specification): Use std::string (info_frame_command): Use gdb::unique_xmalloc_ptr. diff --git a/gdb/cp-support.c b/gdb/cp-support.c index 6b5f2a3..d88bdaa 100644 --- a/gdb/cp-support.c +++ b/gdb/cp-support.c @@ -1546,17 +1546,14 @@ gdb_demangle (const char *name, int options) if (!error_reported) { - char *short_msg, *long_msg; - struct cleanup *back_to; + std::string short_msg + = string_printf (_("unable to demangle '%s' " + "(demangler failed with signal %d)"), + name, crash_signal); - short_msg = xstrprintf (_("unable to demangle '%s' " - "(demangler failed with signal %d)"), - name, crash_signal); - back_to = make_cleanup (xfree, short_msg); - - long_msg = xstrprintf ("%s:%d: %s: %s", __FILE__, __LINE__, - "demangler-warning", short_msg); - make_cleanup (xfree, long_msg); + std::string long_msg + = string_printf ("%s:%d: %s: %s", __FILE__, __LINE__, + "demangler-warning", short_msg.c_str ()); target_terminal::scoped_restore_terminal_state term_state; target_terminal::ours_for_output (); @@ -1565,13 +1562,11 @@ gdb_demangle (const char *name, int options) if (core_dump_allowed) fprintf_unfiltered (gdb_stderr, _("%s\nAttempting to dump core.\n"), - long_msg); + long_msg.c_str ()); else - warn_cant_dump_core (long_msg); - - demangler_warning (__FILE__, __LINE__, "%s", short_msg); + warn_cant_dump_core (long_msg.c_str ()); - do_cleanups (back_to); + demangler_warning (__FILE__, __LINE__, "%s", short_msg.c_str ()); error_reported = 1; } |