Add more magic to find the start of the nametable.

This commit is contained in:
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 */ /* Skip this WORD and get the next DWORD */
len = *(DWORD*)(pAfterOTIBlks + 2); len = *(DWORD*)(pAfterOTIBlks + 2);
/* Now add this to pLibBLk and then add 0x216, sprinkle a bit a /* Now add this to pLibBLk look at what we're pointing at and
magic dust and we should be pointing at the beginning of the name possibly add 0x20, then add 0x216, sprinkle a bit a magic
dust and we should be pointing at the beginning of the name
table */ table */
pNameTable = (char*)pLibBlk + len + 0x216; pNameTable = (char*)pLibBlk + len;
switch(*(WORD*)pNameTable) {
case 0xffff:
break;
case 0x0200:
pNameTable += 0x20;
break;
default:
FIXME("pNameTable jump = %x\n", *(WORD*)pNameTable);
break;
}
pNameTable += 0x216;
pNameTable += 2; pNameTable += 2;

View File

@ -303,7 +303,7 @@ typedef struct {
#define SLTG_DIR_MAGIC "dir" #define SLTG_DIR_MAGIC "dir"
/* Next we have SLTG_Header.nrOfFileBlks - 2 of Index strings. These /* 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 "AAAAAAAAAA" with the first character incremented from 'A' to ensure
uniqueness. I guess successive chars increment when we need to wrap uniqueness. I guess successive chars increment when we need to wrap
the first one. */ the first one. */