aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf-index-write.c
diff options
context:
space:
mode:
authorChristian Biesinger <cbiesinger@google.com>2019-08-28 15:40:31 -0500
committerChristian Biesinger <cbiesinger@google.com>2019-09-23 13:36:34 -0500
commitf945dedfd3512bfbca0f1405c8ea85684980e69a (patch)
tree706c59bb9ef87edd16339939c6b547c72494bfcd /gdb/dwarf-index-write.c
parent4a41f3face78a551ea5c85db24125989754f2ee8 (diff)
downloadgdb-f945dedfd3512bfbca0f1405c8ea85684980e69a.zip
gdb-f945dedfd3512bfbca0f1405c8ea85684980e69a.tar.gz
gdb-f945dedfd3512bfbca0f1405c8ea85684980e69a.tar.bz2
Make ada_decode not use a static buffer
This makes it safer to use in general, and also allows using it on a background thread in the future. Inspired by tromey's patch at: https://github.com/tromey/gdb/commit/1226cbdfa436297a5dec054d94592c45891afa93 (however, implemented in a different way) gdb/ChangeLog: 2019-09-23 Christian Biesinger <cbiesinger@google.com> * ada-exp.y (write_object_remaining): Update. * ada-lang.c (ada_decode): Return a std::string instead of a char* and eliminate the static buffer. (ada_decode_symbol): Update. (ada_la_decode): Update. (ada_sniff_from_mangled_name): Update. (is_valid_name_for_wild_match): Update. (ada_lookup_name_info::matches): Update and simplify. (name_matches_regex): Update. (ada_add_global_exceptions): Update. * ada-lang.h (ada_decode): Update signature. * ada-varobj.c (ada_varobj_describe_simple_array_child): Update. * dwarf-index-write.c (debug_names::insert): Update.
Diffstat (limited to 'gdb/dwarf-index-write.c')
-rw-r--r--gdb/dwarf-index-write.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gdb/dwarf-index-write.c b/gdb/dwarf-index-write.c
index 153c679..0947ba9 100644
--- a/gdb/dwarf-index-write.c
+++ b/gdb/dwarf-index-write.c
@@ -714,13 +714,14 @@ public:
name (of the form "<MumBle>") must be entered without the
angle brackets. Note that the current index is unusual,
see PR symtab/24820 for details. */
- const char *decoded = ada_decode (name);
+ std::string decoded = ada_decode (name);
if (decoded[0] == '<')
name = (char *) obstack_copy0 (&m_string_obstack,
- decoded + 1,
- strlen (decoded + 1) - 1);
+ decoded.c_str () + 1,
+ decoded.length () - 2);
else
- name = obstack_strdup (&m_string_obstack, ada_encode (decoded));
+ name = obstack_strdup (&m_string_obstack,
+ ada_encode (decoded.c_str ()));
}
const auto insertpair