mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 14:49:38 +08:00
libctf: add ctf_ref
This allows you to bump the refcount on a ctf_file_t, so that you can smuggle it out of iterators which open and close the ctf_file_t for you around the loop body (like ctf_archive_iter). You still can't use this to preserve a ctf_file_t for longer than the lifetime of its containing entity (e.g. ctf_archive). include/ * ctf-api.h (ctf_ref): New. libctf/ * libctf.ver (ctf_ref): New. * ctf-open.c (ctf_ref): Implement it.
This commit is contained in:
@ -1620,6 +1620,17 @@ bad:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Bump the refcount on the specified CTF container, to allow export of
|
||||
ctf_file_t's from iterators that open and close the ctf_file_t around the
|
||||
loop. (This does not extend their lifetime beyond that of the ctf_archive_t
|
||||
in which they are contained.) */
|
||||
|
||||
void
|
||||
ctf_ref (ctf_file_t *fp)
|
||||
{
|
||||
fp->ctf_refcnt++;
|
||||
}
|
||||
|
||||
/* Close the specified CTF container and free associated data structures. Note
|
||||
that ctf_file_close() is a reference counted operation: if the specified file
|
||||
is the parent of other active containers, its reference count will be greater
|
||||
|
Reference in New Issue
Block a user