I'm probably just stupid:
fileref_t *fref;
while (gli_filereflist != NULL)
{
fref = gli_filereflist;
if (fref != NULL)
{
glk_fileref_destroy(fref); <-------- Use of memory after it is freed
fref = NULL;
}
}
This is after I added the NULL check and explicitly set fref to NULL after free().
Xcode 12.3. Original code here.
If this is a false positive, is there a way to silence it?
EDIT: gli_filereflist is a linked list, which will point to the next item in the list when the first one is destroyed.
This worked:
while (gli_filereflist)
{
fref = gli_filereflist;
gli_filereflist = gli_filereflist->next;
glk_fileref_destroy(fref);
}