Author: tfaber Date: Sat Dec 24 22:45:26 2011 New Revision: 54749
URL: http://svn.reactos.org/svn/reactos?rev=54749&view=rev Log: [RTL] - ASSERT on damaged heap data structures instead of producing an infinite loop See issue #5857 for more details.
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=54749&am... ============================================================================== --- trunk/reactos/lib/rtl/heap.c [iso-8859-1] (original) +++ trunk/reactos/lib/rtl/heap.c [iso-8859-1] Sat Dec 24 22:45:26 2011 @@ -669,6 +669,7 @@
while (!(LastEntry->Flags & HEAP_ENTRY_LAST_ENTRY)) { + ASSERT(LastEntry->Size != 0); LastEntry += LastEntry->Size; } ASSERT((LastEntry + LastEntry->Size) == FirstEntry); @@ -683,7 +684,7 @@ DPRINT("Updating UcrDescriptor %p, new Address %p, size %d\n", UcrDescriptor, UcrDescriptor->Address, UcrDescriptor->Size);
- /* Set various first entry fields*/ + /* Set various first entry fields */ FirstEntry->SegmentOffset = LastEntry->SegmentOffset; FirstEntry->Size = (USHORT)(*Size >> HEAP_ENTRY_SHIFT); FirstEntry->PreviousSize = LastEntry->Size;