mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
shm: chain_free: BUG() if there are buffers remaining after purge
There may be buffers left, if their destruction has been deferred. However, they should be on the 'deferred' list, not the chain's buffer list. If there are buffers left on the chain's list, that means someone forgot to call shm_unref().
This commit is contained in:
parent
0751172b92
commit
6657146a20
1 changed files with 11 additions and 0 deletions
11
shm.c
11
shm.c
|
|
@ -515,6 +515,11 @@ shm_get_many(struct buffer_chain *chain, size_t count,
|
|||
struct buffer *
|
||||
shm_get_buffer(struct buffer_chain *chain, int width, int height)
|
||||
{
|
||||
LOG_DBG(
|
||||
"chain=%p: looking for a re-usable %dx%d buffer "
|
||||
"among %zu potential buffers",
|
||||
(void *)chain, width, height, tll_length(chain->bufs));
|
||||
|
||||
struct buffer_private *cached = NULL;
|
||||
tll_foreach(chain->bufs, it) {
|
||||
struct buffer_private *buf = it->item;
|
||||
|
|
@ -919,5 +924,11 @@ shm_chain_free(struct buffer_chain *chain)
|
|||
return;
|
||||
|
||||
shm_purge(chain);
|
||||
|
||||
if (tll_length(chain->bufs) > 0) {
|
||||
BUG("chain=%p: there are buffers remaining; "
|
||||
"is there a missing call to shm_unref()?", (void *)chain);
|
||||
}
|
||||
|
||||
free(chain);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue