From a1bc0327a3df4e35e5b923913536c31ca85f16dc Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 25 Mar 2011 17:17:03 +0000 Subject: [PATCH] * ar.c (delete_members): Plug memory leak. --- binutils/ChangeLog | 1 + binutils/ar.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index d369ae88d46..ae56956a5dc 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -2,6 +2,7 @@ * strings.c (print_strings): Plug memory leak. * ar.c (move_members): Plug memory leak. + (delete_members): Plug memory leak. 2011-03-25 Pierre Muller diff --git a/binutils/ar.c b/binutils/ar.c index 6320a28ddcb..263795fb7ee 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); } -- 2.30.2