From 1039fd9ac2a57b7634f60a66ea51e64f5ff69251 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 4 Mar 2020 11:27:29 +1030 Subject: [PATCH] Call cleanup on bfd_check_format_matches error exit * format.c (bfd_check_format_matches): Call cleanup on error exit. --- bfd/ChangeLog | 4 ++++ bfd/format.c | 4 ++++ 2 files changed, 8 insertions(+) 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); -- 2.30.2