* ar.c (move_members): Plug memory leak.

This commit is contained in:
Nick Clifton 2011-03-25 17:14:02 +00:00
parent 628534583b
commit 6a6969108e
2 changed files with 13 additions and 5 deletions

View File

@ -1,6 +1,7 @@
2011-03-25 Michael Snyder <msnyder@vmware.com>
* strings.c (print_strings): Plug memory leak.
* ar.c (move_members): Plug memory leak.
2011-03-25 Pierre Muller <muller@ics.u-strasbg.fr>

View File

@ -1185,8 +1185,9 @@ delete_members (bfd *arch, char **files_to_delete)
static void
move_members (bfd *arch, char **files_to_move)
{
bfd **after_bfd; /* New entries go after this one */
bfd **current_ptr_ptr; /* cdr pointer into contents */
bfd **after_bfd; /* New entries go after this one. */
bfd **current_ptr_ptr; /* cdr pointer into contents. */
const char *tmp = NULL;
for (; *files_to_move; ++files_to_move)
{
@ -1194,8 +1195,11 @@ move_members (bfd *arch, char **files_to_move)
while (*current_ptr_ptr)
{
bfd *current_ptr = *current_ptr_ptr;
if (FILENAME_CMP (normalize (*files_to_move, arch),
current_ptr->filename) == 0)
if (tmp != NULL)
free ((char *) tmp);
tmp = normalize (*files_to_move, arch);
if (FILENAME_CMP (tmp, current_ptr->filename) == 0)
{
/* Move this file to the end of the list - first cut from
where it is. */
@ -1219,10 +1223,13 @@ move_members (bfd *arch, char **files_to_move)
/* xgettext:c-format */
fatal (_("no entry %s in archive %s!"), *files_to_move, arch->filename);
next_file:;
next_file:
;
}
write_archive (arch);
if (tmp != NULL)
free ((char *) tmp);
}
/* Ought to default to replacing in place, but this is existing practice! */