aboutsummaryrefslogtreecommitdiff
path: root/gdb/macroexp.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-02-06 12:11:21 -0700
committerTom Tromey <tom@tromey.com>2018-02-08 11:46:56 -0700
commit0354904bdacb9bf1ebdf3ebdf3723f8a550bcdab (patch)
treeaded66019a133a97c2526f1a0566e97ed77f7f4a /gdb/macroexp.c
parent1739cf248ff21b21271d1e9d5f77a12589c3856c (diff)
downloadfsf-binutils-gdb-0354904bdacb9bf1ebdf3ebdf3723f8a550bcdab.zip
fsf-binutils-gdb-0354904bdacb9bf1ebdf3ebdf3723f8a550bcdab.tar.gz
fsf-binutils-gdb-0354904bdacb9bf1ebdf3ebdf3723f8a550bcdab.tar.bz2
Use std::string in maybe_expand
This patch changes maybe_expand to use std::string rather than an explicit malloc and a cleanup. 2018-02-08 Tom Tromey <tom@tromey.com> * macroexp.c (maybe_expand): Use std::string.
Diffstat (limited to 'gdb/macroexp.c')
-rw-r--r--gdb/macroexp.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/gdb/macroexp.c b/gdb/macroexp.c
index 02cf26f..1fa37d2 100644
--- a/gdb/macroexp.c
+++ b/gdb/macroexp.c
@@ -1347,28 +1347,20 @@ maybe_expand (struct macro_buffer *dest,
{
/* Make a null-terminated copy of it, since that's what our
lookup function expects. */
- char *id = (char *) xmalloc (src_first->len + 1);
- struct cleanup *back_to = make_cleanup (xfree, id);
+ std::string id (src_first->text, src_first->len);
- memcpy (id, src_first->text, src_first->len);
- id[src_first->len] = 0;
-
/* If we're currently re-scanning the result of expanding
this macro, don't expand it again. */
- if (! currently_rescanning (no_loop, id))
+ if (! currently_rescanning (no_loop, id.c_str ()))
{
/* Does this identifier have a macro definition in scope? */
- struct macro_definition *def = lookup_func (id, lookup_baton);
+ struct macro_definition *def = lookup_func (id.c_str (),
+ lookup_baton);
- if (def && expand (id, def, dest, src_rest, no_loop,
+ if (def && expand (id.c_str (), def, dest, src_rest, no_loop,
lookup_func, lookup_baton))
- {
- do_cleanups (back_to);
- return 1;
- }
+ return 1;
}
-
- do_cleanups (back_to);
}
return 0;