diff options
author | Nick Clifton <nickc@redhat.com> | 2011-03-25 17:17:03 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2011-03-25 17:17:03 +0000 |
commit | e1d196ca9559e03c39dddbe73fa6a6190ff7c0c0 (patch) | |
tree | 549b59529c543f584df0c7b6682ce85d617e4074 /binutils/ar.c | |
parent | d305524692c35b2b1f3fed919058f9f1d87c42f8 (diff) | |
download | binutils-redhat-e1d196ca9559e03c39dddbe73fa6a6190ff7c0c0.tar.gz |
* ar.c (delete_members): Plug memory leak.
Diffstat (limited to 'binutils/ar.c')
-rw-r--r-- | binutils/ar.c | 10 |
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); } |