[PATCH v2 3/5] kernelbase: Use HEAP_ADD_USER_INFO for HLOCAL allocations.

Rémi Bernon wine at gitlab.winehq.org
Thu Jun 9 07:16:00 CDT 2022


From: Rémi Bernon <rbernon at codeweavers.com>

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/kernelbase/memory.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c
index 736d3642995..776f0aafa18 100644
--- a/dlls/kernelbase/memory.c
+++ b/dlls/kernelbase/memory.c
@@ -713,6 +713,9 @@ BOOL WINAPI DECLSPEC_HOTPATCH HeapWalk( HANDLE heap, PROCESS_HEAP_ENTRY *entry )
  * Global/local heap functions
  ***********************************************************************/
 
+/* some undocumented flags (names are made up) */
+#define HEAP_ADD_USER_INFO    0x00000100
+
 /* not compatible with windows */
 struct kernelbase_global_data
 {
@@ -826,15 +829,15 @@ HGLOBAL WINAPI DECLSPEC_HOTPATCH GlobalFree( HLOCAL handle )
  */
 HLOCAL WINAPI DECLSPEC_HOTPATCH LocalAlloc( UINT flags, SIZE_T size )
 {
+    DWORD heap_flags = HEAP_ADD_USER_INFO;
     HANDLE heap = GetProcessHeap();
     struct mem_entry *mem;
-    DWORD heap_flags = 0;
     HLOCAL handle;
     void *ptr;
 
     TRACE_(globalmem)( "flags %#x, size %#Ix\n", flags, size );
 
-    if (flags & LMEM_ZEROINIT) heap_flags = HEAP_ZERO_MEMORY;
+    if (flags & LMEM_ZEROINIT) heap_flags |= HEAP_ZERO_MEMORY;
 
     if (!(flags & LMEM_MOVEABLE)) /* pointer */
     {
@@ -964,13 +967,15 @@ LPVOID WINAPI DECLSPEC_HOTPATCH LocalLock( HLOCAL handle )
  */
 HLOCAL WINAPI DECLSPEC_HOTPATCH LocalReAlloc( HLOCAL handle, SIZE_T size, UINT flags )
 {
+    DWORD heap_flags = HEAP_ADD_USER_INFO;
     struct mem_entry *mem;
     HLOCAL ret = 0;
-    DWORD heap_flags = (flags & LMEM_ZEROINIT) ? HEAP_ZERO_MEMORY : 0;
     void *ptr;
 
     TRACE_(globalmem)( "handle %p, size %#Ix, flags %#x\n", handle, size, flags );
 
+    if (flags & LMEM_ZEROINIT) heap_flags |= HEAP_ZERO_MEMORY;
+
     RtlLockHeap( GetProcessHeap() );
     if (flags & LMEM_MODIFY) /* modify flags */
     {
-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/201



More information about the wine-devel mailing list