diff options
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 8 | ||||
-rw-r--r-- | binutils/ar.c | 27 |
2 files changed, 15 insertions, 20 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 2cc6837..7d11219 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,11 @@ +2011-05-02 Alan Modra <amodra@gmail.com> + + PR binutils/12720 + Revert the following change + Michael Snyder <msnyder@vmware.com> + * ar.c (move_members): Plug memory leak. + (delete_members): Plug memory leak. + 2011-04-28 Tom Tromey <tromey@redhat.com> * NEWS: Add note about --dwarf-depth, --dwarf-start, and diff --git a/binutils/ar.c b/binutils/ar.c index 206c7a9..42cc0c6 100644 --- a/binutils/ar.c +++ b/binutils/ar.c @@ -1119,7 +1119,6 @@ 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) { @@ -1141,10 +1140,8 @@ delete_members (bfd *arch, char **files_to_delete) current_ptr_ptr = &(arch->archive_next); while (*current_ptr_ptr) { - if (tmp != NULL) - free ((char *) tmp); - tmp = normalize (*files_to_delete, arch); - if (FILENAME_CMP (tmp, (*current_ptr_ptr)->filename) == 0) + if (FILENAME_CMP (normalize (*files_to_delete, arch), + (*current_ptr_ptr)->filename) == 0) { ++match_count; if (counted_name_mode @@ -1181,9 +1178,6 @@ delete_members (bfd *arch, char **files_to_delete) write_archive (arch); else output_filename = NULL; - - if (tmp != NULL) - free ((char *) tmp); } @@ -1192,9 +1186,8 @@ 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. */ - const char *tmp = NULL; + bfd **after_bfd; /* New entries go after this one */ + bfd **current_ptr_ptr; /* cdr pointer into contents */ for (; *files_to_move; ++files_to_move) { @@ -1202,11 +1195,8 @@ move_members (bfd *arch, char **files_to_move) while (*current_ptr_ptr) { bfd *current_ptr = *current_ptr_ptr; - - if (tmp != NULL) - free ((char *) tmp); - tmp = normalize (*files_to_move, arch); - if (FILENAME_CMP (tmp, current_ptr->filename) == 0) + if (FILENAME_CMP (normalize (*files_to_move, arch), + current_ptr->filename) == 0) { /* Move this file to the end of the list - first cut from where it is. */ @@ -1230,13 +1220,10 @@ 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! */ |