diff options
Diffstat (limited to 'binutils/size.c')
-rw-r--r-- | binutils/size.c | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/binutils/size.c b/binutils/size.c index df0ede0..ff3db5b 100644 --- a/binutils/size.c +++ b/binutils/size.c @@ -368,16 +368,15 @@ display_bfd (bfd *abfd) static void display_archive (bfd *file) { - bfd *arfile = (bfd *) NULL; - bfd *last_arfile = (bfd *) NULL; - + bfd *last_arfile = NULL; for (;;) { - bfd_set_error (bfd_error_no_error); - - arfile = bfd_openr_next_archived_file (file, arfile); - if (arfile == NULL) + bfd *arfile = bfd_openr_next_archived_file (file, last_arfile); + if (arfile == NULL + || arfile == last_arfile) { + if (arfile != NULL) + bfd_set_error (bfd_error_malformed_archive); if (bfd_get_error () != bfd_error_no_more_archived_files) { bfd_nonfatal (bfd_get_filename (file)); @@ -386,17 +385,10 @@ display_archive (bfd *file) break; } - display_bfd (arfile); - if (last_arfile != NULL) - { - bfd_close (last_arfile); - - /* PR 17512: file: a244edbc. */ - if (last_arfile == arfile) - return; - } + bfd_close (last_arfile); + display_bfd (arfile); last_arfile = arfile; } |