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

* allocate always a minimum block size, else free list management causes memory corruption

git-svn-id: trunk@34930 -
florian преди 8 години
родител
ревизия
16fa079a2a
променени са 1 файла, в които са добавени 4 реда и са изтрити 1 реда
  1. 4 1
      rtl/embedded/heapmgr.pp

+ 4 - 1
rtl/embedded/heapmgr.pp

@@ -49,7 +49,10 @@ Unit heapmgr;
         p, prev: PHeapBlock;
         AllocSize, RestSize: ptruint;
       begin
-        AllocSize := align(size+sizeof(pointer), sizeof(pointer));
+        if size<MinBlock then
+          AllocSize := MinBlock
+        else
+          AllocSize := align(size, sizeof(pointer));
 
         p := Blocks;
         prev := nil;