libctf, decl: avoid leaks of the formatted string on error
ctf_decl_sprintf builds up a formatted string in the ctf_decl_t's cd_buf, but then on error this is hardly ever freed: we assume that ctf_decl_fini frees it, but it leaks it instead. Make it free it like any decent ADT should. libctf/ * ctf-decl.c (ctf_decl_fini): Free the cd_buf. (ctf_decl_buf): Once it escapes, don't try to free it later.
This commit is contained in:
parent
c6e9a1e576
commit
b255b35feb
2 changed files with 9 additions and 1 deletions
|
@ -68,6 +68,7 @@ ctf_decl_fini (ctf_decl_t *cd)
|
|||
free (cdp);
|
||||
}
|
||||
}
|
||||
free (cd->cd_buf);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -195,5 +196,7 @@ void ctf_decl_sprintf (ctf_decl_t *cd, const char *format, ...)
|
|||
|
||||
char *ctf_decl_buf (ctf_decl_t *cd)
|
||||
{
|
||||
return cd->cd_buf;
|
||||
char *buf = cd->cd_buf;
|
||||
cd->cd_buf = NULL;
|
||||
return buf;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue