mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-05-22 01:36:10 +08:00
libctf: fix refcount leak in ctf_import
Calling ctf_import (fp, NULL) to cancel out a pre-existing import leaked the refcnt increment on the parent, so it could never be freed. New in v4. libctf/ * ctf-open.c (ctf_import): Do not leak a ctf_file_t ref on every ctf_import after the first for a given file.
This commit is contained in:
@ -1778,6 +1778,7 @@ ctf_import (ctf_file_t *fp, ctf_file_t *pfp)
|
||||
|
||||
if (fp->ctf_parent != NULL)
|
||||
{
|
||||
fp->ctf_parent->ctf_refcnt--;
|
||||
ctf_file_close (fp->ctf_parent);
|
||||
fp->ctf_parent = NULL;
|
||||
}
|
||||
@ -1793,6 +1794,7 @@ ctf_import (ctf_file_t *fp, ctf_file_t *pfp)
|
||||
fp->ctf_flags |= LCTF_CHILD;
|
||||
pfp->ctf_refcnt++;
|
||||
}
|
||||
|
||||
fp->ctf_parent = pfp;
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user