mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-05 15:15:42 +00:00
libctf: ctf_archive_iter: fix tiny leak
If iteration fails because opening a dict has failed, ctf_archive_next does not destroy the iterator, so the caller can keep going and try to open other dicts further into the archive. ctf_archive_iter just returns, though, so it should free the iterator rather than leaking it. libctf/ * ctf-archive.c (ctf_archive_iter): Don't leak the iterator on failure.
This commit is contained in:
@@ -1063,7 +1063,7 @@ ctf_archive_iter (const ctf_archive_t *arc, ctf_archive_member_f *func,
|
||||
ctf_next_t *i = NULL;
|
||||
ctf_dict_t *fp;
|
||||
const char *name;
|
||||
int err;
|
||||
int err = 0;
|
||||
|
||||
while ((fp = ctf_archive_next (arc, &i, &name, 0, &err)) != NULL)
|
||||
{
|
||||
@@ -1077,6 +1077,11 @@ ctf_archive_iter (const ctf_archive_t *arc, ctf_archive_member_f *func,
|
||||
}
|
||||
ctf_dict_close (fp);
|
||||
}
|
||||
if (err != ECTF_NEXT_END && err != 0)
|
||||
{
|
||||
ctf_next_destroy (i);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user