Add more magic to find the start of the nametable.

oldstable
Huw D M Davies 2002-06-10 23:01:34 +00:00 committed by Alexandre Julliard
parent d3cab1857a
commit 61fc6f8cd3
2 changed files with 18 additions and 4 deletions

View File

@ -2920,11 +2920,25 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength)
/* Skip this WORD and get the next DWORD */
len = *(DWORD*)(pAfterOTIBlks + 2);
/* Now add this to pLibBLk and then add 0x216, sprinkle a bit a
magic dust and we should be pointing at the beginning of the name
/* Now add this to pLibBLk look at what we're pointing at and
possibly add 0x20, then add 0x216, sprinkle a bit a magic
dust and we should be pointing at the beginning of the name
table */
pNameTable = (char*)pLibBlk + len;
pNameTable = (char*)pLibBlk + len + 0x216;
switch(*(WORD*)pNameTable) {
case 0xffff:
break;
case 0x0200:
pNameTable += 0x20;
break;
default:
FIXME("pNameTable jump = %x\n", *(WORD*)pNameTable);
break;
}
pNameTable += 0x216;
pNameTable += 2;

View File

@ -303,7 +303,7 @@ typedef struct {
#define SLTG_DIR_MAGIC "dir"
/* Next we have SLTG_Header.nrOfFileBlks - 2 of Index strings. These
are persumbably unique to within the file and look something like
are presumably unique to within the file and look something like
"AAAAAAAAAA" with the first character incremented from 'A' to ensure
uniqueness. I guess successive chars increment when we need to wrap
the first one. */