diff options
Diffstat (limited to 'gdb/minsyms.c')
-rw-r--r-- | gdb/minsyms.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/gdb/minsyms.c b/gdb/minsyms.c index d804c95..4814394 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -158,22 +158,20 @@ lookup_minimal_symbol (const char *name, const char *sfile, unsigned int hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE; unsigned int dem_hash = msymbol_hash_iw (name) % MINIMAL_SYMBOL_HASH_SIZE; - int needtofreename = 0; - const char *modified_name; + const char *modified_name = name; if (sfile != NULL) sfile = lbasename (sfile); /* For C++, canonicalize the input name. */ - modified_name = name; + std::string modified_name_storage; if (current_language->la_language == language_cplus) { - char *cname = cp_canonicalize_string (name); - - if (cname) + std::string cname = cp_canonicalize_string (name); + if (!cname.empty ()) { - modified_name = cname; - needtofreename = 1; + std::swap (modified_name_storage, cname); + modified_name = modified_name_storage.c_str (); } } @@ -272,9 +270,6 @@ lookup_minimal_symbol (const char *name, const char *sfile, } } - if (needtofreename) - xfree ((void *) modified_name); - /* External symbols are best. */ if (found_symbol.minsym != NULL) { |