Call cleanup on bfd_check_format_matches error exit

	* format.c (bfd_check_format_matches): Call cleanup on error exit.
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index ff2881f..6ed228d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2020-03-04  Alan Modra  <amodra@gmail.com>
+
+	* format.c (bfd_check_format_matches): Call cleanup on error exit.
+
 2020-03-03  Alan Modra  <amodra@gmail.com>
 
 	* format.c (struct bfd_preserve): Add cleanup field.
diff --git a/bfd/format.c b/bfd/format.c
index 61f26c6..ab98486 100644
--- a/bfd/format.c
+++ b/bfd/format.c
@@ -515,6 +515,8 @@
     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 @@
     }
   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);