From 74c80e37058d17e356d41c9cbc0b69cff32b5658 Mon Sep 17 00:00:00 2001 From: Art Yerkes Date: Sun, 18 Nov 2007 23:59:48 +0000 Subject: [PATCH] When doing NtAllocateVirtualMemory, you need to MEM_RELEASE if you intend to free the memory, otherwise you'll get stray address space hanging around. This was noticeable as a leak if you just left the command prompt sitting, because every DC allocated to blink the cursor kept address space that was never freed. svn path=/trunk/; revision=30567 --- reactos/subsystems/win32/win32k/eng/mem.c | 2 +- reactos/subsystems/win32/win32k/ntuser/message.c | 2 +- reactos/subsystems/win32/win32k/objects/dc.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/reactos/subsystems/win32/win32k/eng/mem.c b/reactos/subsystems/win32/win32k/eng/mem.c index ea821b02586..8490a11aaf0 100644 --- a/reactos/subsystems/win32/win32k/eng/mem.c +++ b/reactos/subsystems/win32/win32k/eng/mem.c @@ -102,7 +102,7 @@ EngFreeUserMem(PVOID pv) PUSERMEMHEADER Header = ((PUSERMEMHEADER) pv) - 1; ULONG MemSize = sizeof(USERMEMHEADER) + Header->MemSize; - ZwFreeVirtualMemory(NtCurrentProcess(), (PVOID *) &Header, &MemSize, MEM_DECOMMIT); + ZwFreeVirtualMemory(NtCurrentProcess(), (PVOID *) &Header, &MemSize, MEM_RELEASE); } /* diff --git a/reactos/subsystems/win32/win32k/ntuser/message.c b/reactos/subsystems/win32/win32k/ntuser/message.c index 7477730bd39..2e5204b8788 100644 --- a/reactos/subsystems/win32/win32k/ntuser/message.c +++ b/reactos/subsystems/win32/win32k/ntuser/message.c @@ -887,7 +887,7 @@ NtUserPeekMessage(PNTUSERGETMESSAGEINFO UnsafeInfo, if (! NT_SUCCESS(Status)) { ZwFreeVirtualMemory(NtCurrentProcess(), (PVOID *) &UserMem, - &Info.LParamSize, MEM_DECOMMIT); + &Info.LParamSize, MEM_RELEASE); SetLastNtError(Status); RETURN( (BOOL) -1); } diff --git a/reactos/subsystems/win32/win32k/objects/dc.c b/reactos/subsystems/win32/win32k/objects/dc.c index 1489235a9e3..0ad9b63c8d4 100644 --- a/reactos/subsystems/win32/win32k/objects/dc.c +++ b/reactos/subsystems/win32/win32k/objects/dc.c @@ -2418,7 +2418,7 @@ DC_FreeDcAttr(HDC DCToFree ) NTSTATUS Status = ZwFreeVirtualMemory(Pid, &Entry->UserData, &MemSize, - MEM_DECOMMIT); + MEM_RELEASE); if (NT_SUCCESS(Status)) { DPRINT("DC_FreeDC DC_ATTR 0x%x\n", Entry->UserData);