X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fmacro.c;h=6eb62132337bca8ebc1872ffa1ffe510c1737fd3;hb=f5b2fd523f8f180e11f77b84a107279c562672cd;hp=b083382704aa101860696144f4c8f689a0d022e2;hpb=3b4dbbbf59aef4308bae6654bdc7968797504a3c;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/macro.c b/gas/macro.c index b083382704..6eb6213233 100644 --- a/gas/macro.c +++ b/gas/macro.c @@ -1,5 +1,5 @@ /* macro.c - macro support for gas - Copyright (C) 1994-2016 Free Software Foundation, Inc. + Copyright (C) 1994-2017 Free Software Foundation, Inc. Written by Steve and Judy Chamberlain of Cygnus Support, sac@cygnus.com @@ -404,7 +404,7 @@ get_any_string (size_t idx, sb *in, sb *out) } else { - char *br_buf = (char *) xmalloc (1); + char *br_buf = XNEWVEC (char, 1); char *in_br = br_buf; *in_br = '\0'; @@ -438,7 +438,7 @@ get_any_string (size_t idx, sb *in, sb *out) --in_br; else { - br_buf = (char *) xmalloc (strlen (in_br) + 2); + br_buf = XNEWVEC (char, strlen (in_br) + 2); strcpy (br_buf + 1, in_br); free (in_br); in_br = br_buf; @@ -471,7 +471,7 @@ new_formal (void) { formal_entry *formal; - formal = (formal_entry *) xmalloc (sizeof (formal_entry)); + formal = XNEW (formal_entry); sb_new (&formal->name); sb_new (&formal->def); @@ -655,7 +655,7 @@ define_macro (size_t idx, sb *in, sb *label, sb name; const char *error = NULL; - macro = (macro_entry *) xmalloc (sizeof (macro_entry)); + macro = XNEW (macro_entry); sb_new (¯o->sub); sb_new (&name); macro->file = file; @@ -815,7 +815,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, } else { - /* Permit macro parameter substition delineated with + /* Permit macro parameter substitution delineated with an '&' prefix and optional '&' suffix. */ src = sub_actual (src + 1, in, &t, formal_hash, '&', out, 0); } @@ -842,7 +842,7 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals, { /* Sub in the macro invocation number. */ - char buffer[10]; + char buffer[12]; src++; sprintf (buffer, "%d", macro_number); sb_add_string (out, buffer); @@ -1250,13 +1250,12 @@ check_macro (const char *line, sb *expand, if (is_name_ender (*s)) ++s; - copy = (char *) alloca (s - line + 1); - memcpy (copy, line, s - line); - copy[s - line] = '\0'; + copy = xmemdup0 (line, s - line); for (cls = copy; *cls != '\0'; cls ++) *cls = TOLOWER (*cls); macro = (macro_entry *) hash_find (macro_hash, copy); + free (copy); if (macro == NULL) return 0; @@ -1288,7 +1287,7 @@ delete_macro (const char *name) macro_entry *macro; len = strlen (name); - copy = (char *) alloca (len + 1); + copy = XNEWVEC (char, len + 1); for (i = 0; i < len; ++i) copy[i] = TOLOWER (name[i]); copy[i] = '\0'; @@ -1302,7 +1301,8 @@ delete_macro (const char *name) free_macro (macro); } else - as_warn (_("Attempt to purge non-existant macro `%s'"), copy); + as_warn (_("Attempt to purge non-existing macro `%s'"), copy); + free (copy); } /* Handle the MRI IRP and IRPC pseudo-ops. These are handled as a