mscoree: Preserve %ecx when calling ReallyFixupVTable.

This commit is contained in:
Vincent Povirk 2012-09-05 15:25:59 -05:00 committed by Alexandre Julliard
parent 6f1d43b16e
commit b5c663ee1e
1 changed files with 6 additions and 0 deletions

View File

@ -827,6 +827,8 @@ static void get_utf8_args(int *argc, char ***argv)
struct vtable_fixup_thunk struct vtable_fixup_thunk
{ {
/* push %ecx */
BYTE i7;
/* sub $0x4,%esp */ /* sub $0x4,%esp */
BYTE i1[3]; BYTE i1[3];
/* mov fixup,(%esp) */ /* mov fixup,(%esp) */
@ -839,12 +841,15 @@ struct vtable_fixup_thunk
BYTE i4[2]; BYTE i4[2];
/* pop %eax */ /* pop %eax */
BYTE i5; BYTE i5;
/* pop %ecx */
BYTE i8;
/* jmp *vtable_entry */ /* jmp *vtable_entry */
BYTE i6[2]; BYTE i6[2];
void *vtable_entry; void *vtable_entry;
}; };
static const struct vtable_fixup_thunk thunk_template = { static const struct vtable_fixup_thunk thunk_template = {
0x51,
{0x83,0xec,0x04}, {0x83,0xec,0x04},
{0xc7,0x04,0x24}, {0xc7,0x04,0x24},
NULL, NULL,
@ -852,6 +857,7 @@ static const struct vtable_fixup_thunk thunk_template = {
NULL, NULL,
{0xff,0xd0}, {0xff,0xd0},
0x58, 0x58,
0x59,
{0xff,0x25}, {0xff,0x25},
NULL NULL
}; };