diff options
author | Tom Tromey <tromey@adacore.com> | 2020-10-09 08:27:30 -0600 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2020-10-09 08:27:30 -0600 |
commit | 5c4258f4c051a31d7209712ecd28830c55a92034 (patch) | |
tree | 4ca01f20c3de6dae58e62c5a3b0c34f3d78a0e10 /gdb/ada-exp.y | |
parent | fa40fbe484954c560ab1c0ff4bc1b2eeb1511344 (diff) | |
download | gdb-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.y | 13 |
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; |