Fix ThunkManager::ProtectFunction on x86.
This commit is contained in:
parent
25c52b0b69
commit
e137e3711e
|
@ -105,9 +105,12 @@ void *ThunkManager::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, true);
|
||||
unsigned int alignedSize = ABI_GetAlignedFrameSize(num_params * 4);
|
||||
unsigned int alignedSize = ABI_GetAlignedFrameSize(num_params * 4, true);
|
||||
for (int i = 0; i < num_params; i++) {
|
||||
// ESP is changing, so we do not need i
|
||||
// dst-arg1 dst-arg2 | dst-arg3 padding return-addr orig-arg1 | orig-arg2 orig-arg3
|
||||
// ^ ESP ^ target
|
||||
// The offset is just alignedSize (return address makes up for the
|
||||
// missing argument).
|
||||
PUSH(32, MDisp(ESP, alignedSize));
|
||||
}
|
||||
CALL(function);
|
||||
|
|
Loading…
Reference in New Issue