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.
This commit is contained in:
parent
1739cf248f
commit
0354904bda
2 changed files with 10 additions and 14 deletions
|
@ -1,3 +1,7 @@
|
|||
2018-02-08 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* macroexp.c (maybe_expand): Use std::string.
|
||||
|
||||
2018-02-08 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* macroexp.c (struct macro_buffer): Add initializers for some
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue