* macro.c (get_any_string): Free malloced br_buf.

(do_formals): Free 'formal'.
This commit is contained in:
Nick Clifton 2011-03-30 15:10:37 +00:00
parent f956bf33e2
commit 4ac14836c9
2 changed files with 14 additions and 8 deletions

View File

@ -1,6 +1,8 @@
2011-03-30 Michael Snyder <msnyder@vmware.com> 2011-03-30 Michael Snyder <msnyder@vmware.com>
* obj-elf.c (obj_elf_section): Free malloced name. * obj-elf.c (obj_elf_section): Free malloced name.
* macro.c (get_any_string): Free malloced br_buf.
(do_formals): Free 'formal'.
2011-03-30 Tristan Gingold <gingold@adacore.com> 2011-03-30 Tristan Gingold <gingold@adacore.com>

View File

@ -1,6 +1,6 @@
/* macro.c - macro support for gas /* macro.c - macro support for gas
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. 2004, 2005, 2006, 2007, 2008, 2011 Free Software Foundation, Inc.
Written by Steve and Judy Chamberlain of Cygnus Support, Written by Steve and Judy Chamberlain of Cygnus Support,
sac@cygnus.com sac@cygnus.com
@ -119,7 +119,7 @@ buffer_and_nest (const char *from, const char *to, sb *ptr,
int more = get_line (ptr); int more = get_line (ptr);
if (to_len == 4 && strcasecmp(to, "ENDR") == 0) if (to_len == 4 && strcasecmp (to, "ENDR") == 0)
{ {
from = NULL; from = NULL;
from_len = 0; from_len = 0;
@ -384,7 +384,7 @@ get_any_string (int idx, sb *in, sb *out)
} }
else else
{ {
char *br_buf = (char *) xmalloc(1); char *br_buf = (char *) xmalloc (1);
char *in_br = br_buf; char *in_br = br_buf;
*in_br = '\0'; *in_br = '\0';
@ -407,7 +407,10 @@ get_any_string (int idx, sb *in, sb *out)
&& in->ptr[idx] != tchar) && in->ptr[idx] != tchar)
sb_add_char (out, in->ptr[idx++]); sb_add_char (out, in->ptr[idx++]);
if (idx == in->len) if (idx == in->len)
return idx; {
free (br_buf);
return idx;
}
break; break;
case '(': case '(':
case '[': case '[':
@ -415,9 +418,9 @@ get_any_string (int idx, sb *in, sb *out)
--in_br; --in_br;
else else
{ {
br_buf = (char *) xmalloc(strlen(in_br) + 2); br_buf = (char *) xmalloc (strlen (in_br) + 2);
strcpy(br_buf + 1, in_br); strcpy (br_buf + 1, in_br);
free(in_br); free (in_br);
in_br = br_buf; in_br = br_buf;
} }
*in_br = tchar; *in_br = tchar;
@ -434,7 +437,7 @@ get_any_string (int idx, sb *in, sb *out)
sb_add_char (out, tchar); sb_add_char (out, tchar);
++idx; ++idx;
} }
free(br_buf); free (br_buf);
} }
} }
@ -488,6 +491,7 @@ do_formals (macro_entry *macro, int idx, sb *in)
{ {
if (macro->formal_count) if (macro->formal_count)
--idx; --idx;
del_formal (formal); /* 'formal' goes out of scope. */
break; break;
} }
idx = sb_skip_white (idx, in); idx = sb_skip_white (idx, in);