aboutsummaryrefslogtreecommitdiff
path: root/gdb/ada-exp.y
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2020-10-09 08:27:30 -0600
committerTom Tromey <tromey@adacore.com>2020-10-09 08:27:30 -0600
commit5c4258f4c051a31d7209712ecd28830c55a92034 (patch)
tree4ca01f20c3de6dae58e62c5a3b0c34f3d78a0e10 /gdb/ada-exp.y
parentfa40fbe484954c560ab1c0ff4bc1b2eeb1511344 (diff)
downloadgdb-5c4258f4c051a31d7209712ecd28830c55a92034.zip
gdb-5c4258f4c051a31d7209712ecd28830c55a92034.tar.gz
gdb-5c4258f4c051a31d7209712ecd28830c55a92034.tar.bz2
Return std::string from ada_encode
This changes ada_encode to return a std::string. This simplifies it somewhat, removes a use of GROW_VECT, and is also simpler for callers to use. gdb/ChangeLog 2020-10-09 Tom Tromey <tromey@adacore.com> * ada-lang.h (ada_encode): Return std::string. * ada-lang.c (ada_encode_1): Return std::string. (ada_encode): Likewise. (type_from_tag, ada_lookup_name_info::ada_lookup_name_info): Update. * ada-exp.y (block_lookup, write_var_or_type): Update.
Diffstat (limited to 'gdb/ada-exp.y')
-rw-r--r--gdb/ada-exp.y13
1 files changed, 9 insertions, 4 deletions
diff --git a/gdb/ada-exp.y b/gdb/ada-exp.y
index 57d89b0..d09b43e 100644
--- a/gdb/ada-exp.y
+++ b/gdb/ada-exp.y
@@ -953,13 +953,17 @@ block_lookup (const struct block *context, const char *raw_name)
struct symtab *symtab;
const struct block *result = NULL;
+ std::string name_storage;
if (raw_name[0] == '\'')
{
raw_name += 1;
name = raw_name;
}
else
- name = ada_encode (raw_name);
+ {
+ name_storage = ada_encode (raw_name);
+ name = name_storage.c_str ();
+ }
nsyms = ada_lookup_symbol_list (name, context, VAR_DOMAIN, &syms);
@@ -1201,9 +1205,10 @@ write_var_or_type (struct parser_state *par_state,
if (block == NULL)
block = par_state->expression_context_block;
- encoded_name = ada_encode (name0.ptr);
- name_len = strlen (encoded_name);
- encoded_name = obstack_strndup (&temp_parse_space, encoded_name, name_len);
+ std::string name_storage = ada_encode (name0.ptr);
+ name_len = name_storage.size ();
+ encoded_name = obstack_strndup (&temp_parse_space, name_storage.c_str (),
+ name_len);
for (depth = 0; depth < MAX_RENAMING_CHAIN_LENGTH; depth += 1)
{
int tail_index;