summaryrefslogtreecommitdiff
path: root/binutils/ar.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2011-03-25 17:17:03 +0000
committerNick Clifton <nickc@redhat.com>2011-03-25 17:17:03 +0000
commite1d196ca9559e03c39dddbe73fa6a6190ff7c0c0 (patch)
tree549b59529c543f584df0c7b6682ce85d617e4074 /binutils/ar.c
parentd305524692c35b2b1f3fed919058f9f1d87c42f8 (diff)
downloadbinutils-redhat-e1d196ca9559e03c39dddbe73fa6a6190ff7c0c0.tar.gz
* ar.c (delete_members): Plug memory leak.
Diffstat (limited to 'binutils/ar.c')
-rw-r--r--binutils/ar.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/binutils/ar.c b/binutils/ar.c
index 6320a28ddc..263795fb7e 100644
--- a/binutils/ar.c
+++ b/binutils/ar.c
@@ -1118,6 +1118,7 @@ delete_members (bfd *arch, char **files_to_delete)
bfd_boolean found;
bfd_boolean something_changed = FALSE;
int match_count;
+ const char * tmp = NULL;
for (; *files_to_delete != NULL; ++files_to_delete)
{
@@ -1139,8 +1140,10 @@ delete_members (bfd *arch, char **files_to_delete)
current_ptr_ptr = &(arch->archive_next);
while (*current_ptr_ptr)
{
- if (FILENAME_CMP (normalize (*files_to_delete, arch),
- (*current_ptr_ptr)->filename) == 0)
+ if (tmp != NULL)
+ free ((char *) tmp);
+ tmp = normalize (*files_to_delete, arch);
+ if (FILENAME_CMP (tmp, (*current_ptr_ptr)->filename) == 0)
{
++match_count;
if (counted_name_mode
@@ -1177,6 +1180,9 @@ delete_members (bfd *arch, char **files_to_delete)
write_archive (arch);
else
output_filename = NULL;
+
+ if (tmp != NULL)
+ free ((char *) tmp);
}