James Hawkins : fusion: Load the table row numbers before calculating the table offsets.
Module: wine Branch: master Commit: 378fde9acfbb87a5f1bc17b16d8ab6e82bc3aeb4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=378fde9acfbb87a5f1bc17b16d... Author: James Hawkins <jhawkins(a)codeweavers.com> Date: Wed Jul 16 10:51:06 2008 -0500 fusion: Load the table row numbers before calculating the table offsets. --- dlls/fusion/assembly.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-) diff --git a/dlls/fusion/assembly.c b/dlls/fusion/assembly.c index bbe8a76..5bc8725 100644 --- a/dlls/fusion/assembly.c +++ b/dlls/fusion/assembly.c @@ -241,9 +241,17 @@ static HRESULT parse_clr_tables(ASSEMBLY *assembly, ULONG offset) memset(assembly->tables, -1, MAX_CLR_TABLES * sizeof(CLRTABLE)); if (assembly->tableshdr->MaskValid.u.LowPart & 1) - { assembly->tables[0].offset = currofs; - assembly->tables[0].rows = assembly->numrows[0]; + + offidx = 0; + for (i = 0; i < MAX_CLR_TABLES; i++) + { + if ((i < 32 && (assembly->tableshdr->MaskValid.u.LowPart >> i) & 1) || + (i >= 32 && (assembly->tableshdr->MaskValid.u.HighPart >> i) & 1)) + { + assembly->tables[i].rows = assembly->numrows[offidx]; + offidx++; + } } previ = 0; @@ -255,7 +263,6 @@ static HRESULT parse_clr_tables(ASSEMBLY *assembly, ULONG offset) { currofs += COR_TABLE_SIZES[previ] * assembly->numrows[offidx - 1]; assembly->tables[i].offset = currofs; - assembly->tables[i].rows = assembly->numrows[offidx]; offidx++; previ = i; }
participants (1)
-
Alexandre Julliard