mscoree: Add FixupVTable_Assembly function which takes preloaded assembly headers.

Signed-off-by: Paul Gofman <gofmanp@gmail.com>
Signed-off-by: Vincent Povirk <vincent@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Paul Gofman 2016-01-30 04:36:48 +03:00 committed by Alexandre Julliard
parent 9c526b4131
commit 5dea748c5b
1 changed files with 14 additions and 9 deletions

View File

@ -1135,23 +1135,28 @@ static void FixupVTableEntry(HMODULE hmodule, VTableFixup *vtable_fixup)
list_add_tail(&dll_fixups, &fixup->entry);
}
static void FixupVTable_Assembly(HMODULE hmodule, ASSEMBLY *assembly)
{
VTableFixup *vtable_fixups;
ULONG vtable_fixup_count, i;
assembly_get_vtable_fixups(assembly, &vtable_fixups, &vtable_fixup_count);
if (CAN_FIXUP_VTABLE)
for (i=0; i<vtable_fixup_count; i++)
FixupVTableEntry(hmodule, &vtable_fixups[i]);
else if (vtable_fixup_count)
FIXME("cannot fixup vtable; expect a crash\n");
}
static void FixupVTable(HMODULE hmodule)
{
ASSEMBLY *assembly;
HRESULT hr;
VTableFixup *vtable_fixups;
ULONG vtable_fixup_count, i;
hr = assembly_from_hmodule(&assembly, hmodule);
if (SUCCEEDED(hr))
{
hr = assembly_get_vtable_fixups(assembly, &vtable_fixups, &vtable_fixup_count);
if (CAN_FIXUP_VTABLE)
for (i=0; i<vtable_fixup_count; i++)
FixupVTableEntry(hmodule, &vtable_fixups[i]);
else if (vtable_fixup_count)
FIXME("cannot fixup vtable; expect a crash\n");
FixupVTable_Assembly(hmodule, assembly);
assembly_release(assembly);
}
else