diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ff2881f966f..6ed228d713b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,7 @@ +2020-03-04 Alan Modra + + * format.c (bfd_check_format_matches): Call cleanup on error exit. + 2020-03-03 Alan Modra * format.c (struct bfd_preserve): Add cleanup field. diff --git a/bfd/format.c b/bfd/format.c index 61f26c6042a..ab98486fb45 100644 --- a/bfd/format.c +++ b/bfd/format.c @@ -515,6 +515,8 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching) err_unrecog: bfd_set_error (bfd_error_file_not_recognized); err_ret: + if (cleanup) + cleanup (abfd); abfd->xvec = save_targ; abfd->format = bfd_unknown; if (matching_vector) @@ -544,6 +546,8 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching) } else if (matching_vector) free (matching_vector); + if (cleanup) + cleanup (abfd); if (preserve_match.marker != NULL) bfd_preserve_finish (abfd, &preserve_match); bfd_preserve_restore (abfd, &preserve);