diff options
author | Nick Clifton <nickc@redhat.com> | 2017-09-05 14:53:37 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2017-09-05 14:53:37 +0100 |
commit | 5709459090fb152a85141d34e6817bc597c6997a (patch) | |
tree | 3327f6692690fd2c848d6b3b9f99abd8fcba7620 | |
parent | 81d80fc079069b721fa806db9789852858aa09f1 (diff) | |
download | binutils-gdb-5709459090fb152a85141d34e6817bc597c6997a.tar.gz |
Import patch from mainline to fix memory leak.
PR binutils/22032
* opncls.c (bfd_close_all_done): Don't call bfd_cache_close
before _close_and_cleanup. Call iovec->bclose after.
(bfd_close): Remove code common to, and call, bfd_close_all_done.
-rw-r--r-- | bfd/ChangeLog | 9 | ||||
-rw-r--r-- | bfd/opncls.c | 19 |
2 files changed, 14 insertions, 14 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index db9d0a98482..fc93decfae5 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,12 @@ +2017-09-05 Nick Clifton <nickc@redhat.com> + + Import from mainline: + + PR binutils/22032 + * opncls.c (bfd_close_all_done): Don't call bfd_cache_close + before _close_and_cleanup. Call iovec->bclose after. + (bfd_close): Remove code common to, and call, bfd_close_all_done. + 2017-09-04 Nick Clifton <nickc@redhat.com> Import from mainline: diff --git a/bfd/opncls.c b/bfd/opncls.c index 913341c9ffc..fa549868544 100644 --- a/bfd/opncls.c +++ b/bfd/opncls.c @@ -726,25 +726,13 @@ RETURNS bfd_boolean bfd_close (bfd *abfd) { - bfd_boolean ret; - if (bfd_write_p (abfd)) { if (! BFD_SEND_FMT (abfd, _bfd_write_contents, (abfd))) return FALSE; } - if (! BFD_SEND (abfd, _close_and_cleanup, (abfd))) - return FALSE; - - ret = abfd->iovec->bclose (abfd) == 0; - - if (ret) - _maybe_make_executable (abfd); - - _bfd_delete_bfd (abfd); - - return ret; + return bfd_close_all_done (abfd); } /* @@ -774,7 +762,10 @@ bfd_close_all_done (bfd *abfd) { bfd_boolean ret; - ret = bfd_cache_close (abfd); + if (! BFD_SEND (abfd, _close_and_cleanup, (abfd))) + return FALSE; + + ret = abfd->iovec->bclose (abfd) == 0; if (ret) _maybe_make_executable (abfd); |