From 4832f465f190f969027227381cb2e3c564a60fab Mon Sep 17 00:00:00 2001 From: Michael Martin Date: Wed, 13 May 2009 09:48:32 +0000 Subject: [PATCH] - GlobalReAlloc: SetUserValueHeap and SetUserFlagsHeap after RtlReAllocateHeap. - LocalReAlloc: Add missing SetUserFlagsHeap after RtlAllocateHeap. SetUserValueHeap and SetUserFlagsHeap after RtlReAllocateHeap. svn path=/trunk/; revision=40910 --- reactos/dll/win32/kernel32/mem/global.c | 14 ++++++++++++++ reactos/dll/win32/kernel32/mem/local.c | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/reactos/dll/win32/kernel32/mem/global.c b/reactos/dll/win32/kernel32/mem/global.c index c759acd5ee9..0c11ae15b40 100644 --- a/reactos/dll/win32/kernel32/mem/global.c +++ b/reactos/dll/win32/kernel32/mem/global.c @@ -547,6 +547,20 @@ GlobalReAlloc(HGLOBAL hMem, /* And do the re-allocation */ Ptr = RtlReAllocateHeap(hProcessHeap, Flags, Ptr, dwBytes); + + if (Ptr) + { + /* Allocation succeeded, so save our entry */ + RtlSetUserValueHeap(hProcessHeap, + HEAP_NO_SERIALIZE, + Ptr, + hMem); + RtlSetUserFlagsHeap(hProcessHeap, + HEAP_NO_SERIALIZE, + Ptr, + Flags); + } + } /* Make sure we have a pointer by now */ diff --git a/reactos/dll/win32/kernel32/mem/local.c b/reactos/dll/win32/kernel32/mem/local.c index 7627fc24764..02f63031c40 100644 --- a/reactos/dll/win32/kernel32/mem/local.c +++ b/reactos/dll/win32/kernel32/mem/local.c @@ -354,6 +354,11 @@ LocalReAlloc(HLOCAL hMem, HEAP_NO_SERIALIZE, Ptr, hMem); + RtlSetUserFlagsHeap(hProcessHeap, + HEAP_NO_SERIALIZE, + Ptr, + Flags); + } } else @@ -375,6 +380,19 @@ LocalReAlloc(HLOCAL hMem, /* And do the re-allocation */ Ptr = RtlReAllocateHeap(hProcessHeap, Flags, Ptr, dwBytes); + + if (Ptr) + { + /* Allocation succeeded, so save our entry */ + RtlSetUserValueHeap(hProcessHeap, + HEAP_NO_SERIALIZE, + Ptr, + hMem); + RtlSetUserFlagsHeap(hProcessHeap, + HEAP_NO_SERIALIZE, + Ptr, + Flags); + } } /* Make sure we have a pointer by now */