aboutsummaryrefslogtreecommitdiff
path: root/libctf/ctf-archive.c
diff options
context:
space:
mode:
authorNick Alcock <nick.alcock@oracle.com>2019-07-29 17:02:48 +0100
committerNick Alcock <nick.alcock@oracle.com>2019-10-03 17:04:55 +0100
commitf046147d59aab0c8b6f00cd182f34b42ac8915e8 (patch)
treecfde61dd0d3715ea17ba5be78ea650677452c0a3 /libctf/ctf-archive.c
parentedc8bbe90b82f1fa4f3f261b5c97503867e9aba4 (diff)
downloadbinutils-f046147d59aab0c8b6f00cd182f34b42ac8915e8.zip
binutils-f046147d59aab0c8b6f00cd182f34b42ac8915e8.tar.gz
binutils-f046147d59aab0c8b6f00cd182f34b42ac8915e8.tar.bz2
libctf: actually close bfds we have opened
When we do a ctf_fdopen, we open things via bfd_fdopenr and set up a hook to close the bfd again... but then we never actually call that hook from anywhere, so we eventually leak every bfd we open. Fix this by calling the hook (if set) in ctf_arc_close. New in v3. libctf/ * ctf-archive.c (ctf_arc_close): Call ctfi_bfd_close if set. * ctf-open-bfd.c (ctf_bfdclose): Fix comment.
Diffstat (limited to 'libctf/ctf-archive.c')
-rw-r--r--libctf/ctf-archive.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libctf/ctf-archive.c b/libctf/ctf-archive.c
index 8de11d6..979641c 100644
--- a/libctf/ctf-archive.c
+++ b/libctf/ctf-archive.c
@@ -436,6 +436,8 @@ ctf_arc_close (ctf_archive_t *arc)
free ((void *) arc->ctfi_symsect.cts_data);
/* Do not free the ctfi_strsect: it is bound to the bfd. */
free (arc->ctfi_data);
+ if (arc->ctfi_bfd_close)
+ arc->ctfi_bfd_close (arc);
free (arc);
}