Преглед на файлове

Merge branch 'master' of https://github.com/raysan5/raylib

Ray преди 4 години
родител
ревизия
fa79ae8a3d
променени са 1 файла, в които са добавени 13 реда и са изтрити 2 реда
  1. 13 2
      src/extras/rmem.h

+ 13 - 2
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;
                 }