summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/Thunk.cpp
diff options
context:
space:
mode:
authorMaarten ter Huurne <maarten@treewalker.org>2008-09-05 01:48:16 +0000
committerMaarten ter Huurne <maarten@treewalker.org>2008-09-05 01:48:16 +0000
commitcf36d4ba58ed12987107fe44e810f148dca48801 (patch)
treedfdbcac49fd4159e11a406bb7e2895eea09bf043 /Source/Core/Common/Src/Thunk.cpp
parent6d53aaed21970604a706f06ec154eae4a5031c55 (diff)
Fixed ProtectFunction(): it should copy parameters using the padded size. Actually, I am not sure this function is correct, but at least its implementation is now equivalent to the original (before rev 439).
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@441 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/Common/Src/Thunk.cpp')
-rw-r--r--Source/Core/Common/Src/Thunk.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/Source/Core/Common/Src/Thunk.cpp b/Source/Core/Common/Src/Thunk.cpp
index 086ad66cbb..73ad098090 100644
--- a/Source/Core/Common/Src/Thunk.cpp
+++ b/Source/Core/Common/Src/Thunk.cpp
@@ -137,9 +137,10 @@ void *ProtectFunction(void *function, int num_params)
// trickery : we simply re-push the parameters. might not be optimal, but that doesn't really
// matter.
ABI_AlignStack(num_params * 4);
+ unsigned int alignedSize = ABI_GetAlignedFrameSize(num_params * 4);
for (int i = 0; i < num_params; i++) {
// ESP is changing, so we do not need i
- PUSH(32, MDisp(ESP, num_params * 4));
+ PUSH(32, MDisp(ESP, alignedSize - 4));
}
CALL(function);
ABI_RestoreStack(num_params * 4);