diff options
| author | atticus <[email protected]> | 2021-09-02 00:15:32 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-09-01 23:15:32 +0200 |
| commit | dfadb3ee379f60f9fdb3d3a1535c716555e05dcc (patch) | |
| tree | 9570e2378619d1226a2c6e08d88403d099a60006 /src/extras | |
| parent | 6e76baa6a93d039e132fe11eedc74958971bf4a3 (diff) | |
| download | raylib-dfadb3ee379f60f9fdb3d3a1535c716555e05dcc.tar.gz raylib-dfadb3ee379f60f9fdb3d3a1535c716555e05dcc.zip | |
fix various memory leaks (#1969)
Diffstat (limited to 'src/extras')
| -rw-r--r-- | src/extras/rmem.h | 15 |
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; } |
