From 129f3f133dff3fc8b6eb149db59a85625e1c3220 Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Fri, 8 Oct 2010 19:30:23 +0000 Subject: [PATCH] [HEAP] - Set proper heap flags (tail and free checking) in case heap validation is enabled. Fixes another bunch of winetests. svn path=/trunk/; revision=49057 --- reactos/lib/rtl/heap_rewrite.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/reactos/lib/rtl/heap_rewrite.c b/reactos/lib/rtl/heap_rewrite.c index 890c5b9b2bd..2075f076c27 100644 --- a/reactos/lib/rtl/heap_rewrite.c +++ b/reactos/lib/rtl/heap_rewrite.c @@ -1656,6 +1656,24 @@ RtlCreateHeap(ULONG Flags, TotalSize = ROUND_UP(CommitSize, 16 * PAGE_SIZE); } + if (RtlpGetMode() == UserMode) + { + /* TODO: Here should be a call to special "Debug" heap, which does parameters validation, + however we're just going to simulate setting correct flags here */ + if (Flags & (HEAP_VALIDATE_ALL_ENABLED | + HEAP_VALIDATE_PARAMETERS_ENABLED | + HEAP_CAPTURE_STACK_BACKTRACES | + HEAP_FLAG_PAGE_ALLOCS | + HEAP_CREATE_ENABLE_TRACING) && + !(Flags & HEAP_SKIP_VALIDATION_CHECKS)) + { + // RtlDebugCreateHeap(Flags, Addr, TotalSize, CommitSize, Lock, Parameters); + Flags |= HEAP_SKIP_VALIDATION_CHECKS | + HEAP_TAIL_CHECKING_ENABLED | + HEAP_FREE_CHECKING_ENABLED; + } + } + /* Calculate header size */ HeaderSize = sizeof(HEAP); if (!(Flags & HEAP_NO_SERIALIZE))