Author: fireball
Date: Thu Oct 7 07:56:26 2010
New Revision: 49029
URL:
http://svn.reactos.org/svn/reactos?rev=49029&view=rev
Log:
[WIN32K]
- Roel Messiant: Return correct address in the user heap commit routine. Should fix boot
with the new heap manager.
Modified:
trunk/reactos/subsystems/win32/win32k/misc/usrheap.c
Modified: trunk/reactos/subsystems/win32/win32k/misc/usrheap.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/mi…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/misc/usrheap.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/misc/usrheap.c [iso-8859-1] Thu Oct 7 07:56:26
2010
@@ -32,7 +32,8 @@
PW32HEAP_USER_MAPPING Mapping;
PVOID UserBase = NULL;
NTSTATUS Status;
- SIZE_T Delta = (SIZE_T)((ULONG_PTR)(*CommitAddress) - (ULONG_PTR)Base);
+ SIZE_T Delta;
+ PVOID UserCommitAddress;
W32Process = PsGetCurrentProcessWin32Process();
@@ -79,18 +80,23 @@
return Status;
}
- /* commit! */
- UserBase = (PVOID)((ULONG_PTR)UserBase + Delta);
-
+ /* Apply the commit address offset to the user base address */
+ Delta = (SIZE_T) ((ULONG_PTR) (*CommitAddress) - (ULONG_PTR) (Base));
+ UserCommitAddress = (PVOID) ((ULONG_PTR) (UserBase) + Delta);
+
+ /* Perform the actual commit */
Status = ZwAllocateVirtualMemory(NtCurrentProcess(),
- &UserBase,
+ &UserCommitAddress,
0,
CommitSize,
MEM_COMMIT,
PAGE_EXECUTE_READ);
+
if (NT_SUCCESS(Status))
{
- *CommitAddress = (PVOID)((ULONG_PTR)UserBase + Delta);
+ /* Determine the address to return */
+ Delta = (SIZE_T) ((ULONG_PTR) (UserCommitAddress) - (ULONG_PTR) (UserBase));
+ *CommitAddress = (PVOID) ((ULONG_PTR) (Base) + Delta);
}
if (W32Process == NULL)