From 3eef3b2c2d85bb0b83a4e902d4444400ddfde0ab Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sun, 12 Feb 2023 22:34:27 +1030 Subject: [PATCH] objcopy memory leaks This fixes some objcopy memory leaks. commit 450da4bd38ae used xatexit to tidy most of the hash table memory, but of course that's ineffective without a call to xexit. The other major memory leak happens if there is an error of some sort writing the output file, due to not closing the input file and thus not freeing memory attached to the bfd. * objcopy.c (copy_file): Don't return when bfd_close of output gives an error, always bfd_close input too. (main): Call xexit. --- binutils/objcopy.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/binutils/objcopy.c b/binutils/objcopy.c index eb2e54b9602..b9d946a38e4 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -3934,14 +3934,12 @@ copy_file (const char *input_filename, const char *output_filename, int ofd, { status = 1; bfd_nonfatal_message (output_filename, NULL, NULL, NULL); - return; } if (!bfd_close (ibfd)) { status = 1; bfd_nonfatal_message (input_filename, NULL, NULL, NULL); - return; } } else @@ -6093,5 +6091,6 @@ main (int argc, char *argv[]) END_PROGRESS (program_name); + xexit (status); return status; } -- 2.30.2