summaryrefslogtreecommitdiffhomepage
path: root/src/extras
diff options
context:
space:
mode:
authoratticus <[email protected]>2021-09-02 00:15:32 +0300
committerGitHub <[email protected]>2021-09-01 23:15:32 +0200
commitdfadb3ee379f60f9fdb3d3a1535c716555e05dcc (patch)
tree9570e2378619d1226a2c6e08d88403d099a60006 /src/extras
parent6e76baa6a93d039e132fe11eedc74958971bf4a3 (diff)
downloadraylib-dfadb3ee379f60f9fdb3d3a1535c716555e05dcc.tar.gz
raylib-dfadb3ee379f60f9fdb3d3a1535c716555e05dcc.zip
fix various memory leaks (#1969)
Diffstat (limited to 'src/extras')
-rw-r--r--src/extras/rmem.h15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/extras/rmem.h b/src/extras/rmem.h
index 7f50adf8..43005cfe 100644
--- a/src/extras/rmem.h
+++ b/src/extras/rmem.h
@@ -276,7 +276,10 @@ static void __InsertMemNode(MemPool *const mempool, AllocList *const list, MemNo
mempool->arena.offs += iter->size;
__RemoveMemNode(list, iter);
iter = list->head;
- if (iter == NULL) return;
+ if (iter == NULL) {
+ list->head = node;
+ return;
+ }
}
const uintptr_t inode = ( uintptr_t )node;
const uintptr_t iiter = ( uintptr_t )iter;
@@ -293,6 +296,14 @@ static void __InsertMemNode(MemPool *const mempool, AllocList *const list, MemNo
iter->size += node->size;
return;
}
+ else if (iter->next == NULL)
+ {
+ // we reached the end of the free list -> append the node
+ iter->next = node;
+ node->prev = iter;
+ list->len++;
+ return;
+ }
}
else if (iter > node)
{
@@ -326,7 +337,7 @@ static void __InsertMemNode(MemPool *const mempool, AllocList *const list, MemNo
}
else
{
- __InsertMemNodeBefore(list, iter, node);
+ __InsertMemNodeBefore(list, node, iter);
list->len++;
return;
}