[ros-diffs] [gvg] 13227: Keep usermode stack 4-byte aligned
gvg at svn.reactos.com
gvg at svn.reactos.com
Sun Jan 23 21:48:21 CET 2005
Keep usermode stack 4-byte aligned
Modified: trunk/reactos/ntoskrnl/ps/w32call.c
_____
Modified: trunk/reactos/ntoskrnl/ps/w32call.c
--- trunk/reactos/ntoskrnl/ps/w32call.c 2005-01-23 18:18:08 UTC (rev
13226)
+++ trunk/reactos/ntoskrnl/ps/w32call.c 2005-01-23 20:48:19 UTC (rev
13227)
@@ -292,7 +292,8 @@
memcpy((char*)NewStack + StackSize - sizeof(KTRAP_FRAME) -
sizeof(FX_SAVE_AREA),
Thread->Tcb.TrapFrame, sizeof(KTRAP_FRAME) - (4 *
sizeof(DWORD)));
NewFrame = (PKTRAP_FRAME)((char*)NewStack + StackSize -
sizeof(KTRAP_FRAME) - sizeof(FX_SAVE_AREA));
- NewFrame->Esp -= (ArgumentLength + (4 * sizeof(ULONG)));
+ /* We need the stack pointer to remain 4-byte aligned */
+ NewFrame->Esp -= (((ArgumentLength + 3) & (~ 0x3)) + (4 *
sizeof(ULONG)));
NewFrame->Eip = (ULONG)LdrpGetSystemDllCallbackDispatcher();
UserEsp = (PULONG)NewFrame->Esp;
UserEsp[0] = 0; /* Return address. */
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20050123/21217010/attachment.html
More information about the Ros-diffs
mailing list