Author: tfaber
Date: Sun Mar 29 14:10:20 2015
New Revision: 66959

URL: http://svn.reactos.org/svn/reactos?rev=66959&view=rev
Log:
[RTL]
- HEAP_ENTRY::Size is in bytes for HEAP_ENTRY_VIRTUAL_ALLOC allocations. Save 
it accordingly
CORE-9441

Modified:
    trunk/reactos/lib/rtl/heap.c

Modified: trunk/reactos/lib/rtl/heap.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/heap.c?rev=66959&r1=66958&r2=66959&view=diff
==============================================================================
--- trunk/reactos/lib/rtl/heap.c        [iso-8859-1] (original)
+++ trunk/reactos/lib/rtl/heap.c        [iso-8859-1] Sun Mar 29 14:10:20 2015
@@ -427,6 +427,7 @@
 
     /* Get pointer to the containing record */
     VirtualEntry = CONTAINING_RECORD(HeapEntry, HEAP_VIRTUAL_ALLOC_ENTRY, 
BusyBlock);
+    ASSERT(VirtualEntry->BusyBlock.Size >= sizeof(HEAP_VIRTUAL_ALLOC_ENTRY));
 
     /* Restore the real size */
     return VirtualEntry->CommitSize - HeapEntry->Size;
@@ -2096,6 +2097,7 @@
 
         /* Initialize the newly allocated block */
         VirtualBlock->BusyBlock.Size = (USHORT)(AllocationSize - Size);
+        ASSERT(VirtualBlock->BusyBlock.Size >= 
sizeof(HEAP_VIRTUAL_ALLOC_ENTRY));
         VirtualBlock->BusyBlock.Flags = EntryFlags | HEAP_ENTRY_VIRTUAL_ALLOC 
| HEAP_ENTRY_EXTRA_PRESENT;
         VirtualBlock->CommitSize = AllocationSize;
         VirtualBlock->ReserveSize = AllocationSize;
@@ -2648,7 +2650,8 @@
         if (InUseEntry->Flags & HEAP_ENTRY_VIRTUAL_ALLOC)
         {
             /* Simple in case of a virtual alloc - just an unused size */
-            InUseEntry->Size = (USHORT)((AllocationSize - Size) >> 
HEAP_ENTRY_SHIFT);
+            InUseEntry->Size = (USHORT)(AllocationSize - Size);
+            ASSERT(InUseEntry->Size >= sizeof(HEAP_VIRTUAL_ALLOC_ENTRY));
         }
         else if (InUseEntry->Flags & HEAP_ENTRY_EXTRA_PRESENT)
         {


Reply via email to