diff --git a/patches/widl-SLTG_Typelib_Support/0021-oleaut32-Fix-logic-for-deciding-whether-type-descrip.patch b/patches/widl-SLTG_Typelib_Support/0021-oleaut32-Fix-logic-for-deciding-whether-type-descrip.patch deleted file mode 100644 index d30298d0..00000000 --- a/patches/widl-SLTG_Typelib_Support/0021-oleaut32-Fix-logic-for-deciding-whether-type-descrip.patch +++ /dev/null @@ -1,63 +0,0 @@ -From ed5f6c45666a220fd9f2532d0ab55bc9e4e7054c Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov -Date: Wed, 20 Jan 2016 14:04:08 +0800 -Subject: oleaut32: Fix logic for deciding whether type description follows the - name (v2). - -This makes it possible to load an SLTG typelib generated by widl. - -It looks like the lowest bit actually indicates whether type description -follows the name, and since the name offsets are always aligned that makes -sense. ---- - dlls/oleaut32/typelib.c | 17 ++++++----------- - 1 file changed, 6 insertions(+), 11 deletions(-) - -diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c -index 0a83b79..d8d8ec8 100644 ---- a/dlls/oleaut32/typelib.c -+++ b/dlls/oleaut32/typelib.c -@@ -4214,7 +4214,7 @@ static void SLTG_DoFuncs(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, - pArg = (WORD*)(pBlk + pFunc->arg_off); - - for(param = 0; param < pFuncDesc->funcdesc.cParams; param++) { -- char *paramName = pNameTable + *pArg; -+ char *paramName = pNameTable + (*pArg & ~1); - BOOL HaveOffs; - /* If arg type follows then paramName points to the 2nd - letter of the name, else the next WORD is an offset to -@@ -4225,26 +4225,21 @@ static void SLTG_DoFuncs(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, - meaning that the next WORD is the type, the latter - meaning that the next WORD is an offset to the type. */ - -- HaveOffs = FALSE; -- if(*pArg == 0xffff) -+ if(*pArg == 0xffff || *pArg == 0xfffe) - paramName = NULL; -- else if(*pArg == 0xfffe) { -- paramName = NULL; -- HaveOffs = TRUE; -- } -- else if(paramName[-1] && !isalnum(paramName[-1])) -- HaveOffs = TRUE; - -+ HaveOffs = !(*pArg & 1); - pArg++; - -+ TRACE_(typelib)("param %d: paramName %s, *pArg %#x\n", -+ param, debugstr_a(paramName), *pArg); -+ - if(HaveOffs) { /* the next word is an offset to type */ - pType = (WORD*)(pBlk + *pArg); - SLTG_DoElem(pType, pBlk, - &pFuncDesc->funcdesc.lprgelemdescParam[param], ref_lookup); - pArg++; - } else { -- if(paramName) -- paramName--; - pArg = SLTG_DoElem(pArg, pBlk, - &pFuncDesc->funcdesc.lprgelemdescParam[param], ref_lookup); - } --- -2.6.4 - diff --git a/patches/widl-SLTG_Typelib_Support/0023-oleaut32-Implement-decoding-of-SLTG-help-strings.patch b/patches/widl-SLTG_Typelib_Support/0023-oleaut32-Implement-decoding-of-SLTG-help-strings.patch deleted file mode 100644 index b42ff5d3..00000000 --- a/patches/widl-SLTG_Typelib_Support/0023-oleaut32-Implement-decoding-of-SLTG-help-strings.patch +++ /dev/null @@ -1,247 +0,0 @@ -From cca2b1bf5ffed383620c26fdb7a37c21dbd38171 Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov -Date: Tue, 26 Jan 2016 15:05:54 +0800 -Subject: [PATCH] oleaut32: Implement decoding of SLTG help strings. - -Based on the patch by Sebastian Lackner . ---- - dlls/oleaut32/typelib.c | 134 ++++++++++++++++++++++++++++++++-------- - dlls/oleaut32/typelib.h | 4 +- - 2 files changed, 111 insertions(+), 27 deletions(-) - -diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c -index 1740472c9e8..d5c8191abba 100644 ---- a/dlls/oleaut32/typelib.c -+++ b/dlls/oleaut32/typelib.c -@@ -3680,6 +3680,87 @@ static BOOL TLB_GUIDFromString(const char *str, GUID *guid) - return TRUE; - } - -+struct bitstream -+{ -+ const BYTE *buffer; -+ DWORD length; -+ WORD current; -+}; -+ -+static const char *lookup_code(const BYTE *table, DWORD table_size, struct bitstream *bits) -+{ -+ const BYTE *p = table; -+ -+ while (p < table + table_size && *p == 0x80) -+ { -+ if (p + 2 >= table + table_size) return NULL; -+ -+ if (!(bits->current & 0xff)) -+ { -+ if (!bits->length) return NULL; -+ bits->current = (*bits->buffer << 8) | 1; -+ bits->buffer++; -+ bits->length--; -+ } -+ -+ if (bits->current & 0x8000) -+ { -+ p += 3; -+ } -+ else -+ { -+ p = table + (*(p + 2) | (*(p + 1) << 8)); -+ } -+ -+ bits->current <<= 1; -+ } -+ -+ if (p + 1 < table + table_size && *(p + 1)) -+ { -+ /* FIXME: Whats the meaning of *p? */ -+ const BYTE *q = p + 1; -+ while (q < table + table_size && *q) q++; -+ return (q < table + table_size) ? (const char *)(p + 1) : NULL; -+ } -+ -+ return NULL; -+} -+ -+static const TLBString *decode_string(const BYTE *table, const char *stream, DWORD stream_length, ITypeLibImpl *lib) -+{ -+ DWORD buf_size, table_size; -+ const char *p; -+ struct bitstream bits; -+ BSTR buf; -+ TLBString *tlbstr; -+ -+ if (!stream_length) return NULL; -+ -+ bits.buffer = (const BYTE *)stream; -+ bits.length = stream_length; -+ bits.current = 0; -+ -+ buf_size = *(const WORD *)table; -+ table += sizeof(WORD); -+ table_size = *(const DWORD *)table; -+ table += sizeof(DWORD); -+ -+ buf = SysAllocStringLen(NULL, buf_size); -+ buf[0] = 0; -+ -+ while ((p = lookup_code(table, table_size, &bits))) -+ { -+ static const WCHAR spaceW[] = { ' ',0 }; -+ if (buf[0]) lstrcatW(buf, spaceW); -+ MultiByteToWideChar(CP_ACP, 0, p, -1, buf + lstrlenW(buf), buf_size - lstrlenW(buf)); -+ } -+ -+ tlbstr = TLB_append_str(&lib->string_list, buf); -+ SysFreeString(buf); -+ -+ return tlbstr; -+} -+ - static WORD SLTG_ReadString(const char *ptr, const TLBString **pStr, ITypeLibImpl *lib) - { - WORD bytelen; -@@ -4366,17 +4447,17 @@ static void SLTG_ProcessModule(char *pBlk, ITypeInfoImpl *pTI, - /* Because SLTG_OtherTypeInfo is such a painful struct, we make a more - manageable copy of it into this */ - typedef struct { -- WORD small_no; - char *index_name; - char *other_name; - WORD res1a; - WORD name_offs; -- WORD more_bytes; -+ WORD hlpstr_len; - char *extra; - WORD res20; - DWORD helpcontext; - WORD res26; - GUID uuid; -+ WORD typekind; - } SLTG_InternalOtherTypeInfo; - - /**************************************************************************** -@@ -4395,8 +4476,8 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) - LPVOID pBlk, pFirstBlk; - SLTG_LibBlk *pLibBlk; - SLTG_InternalOtherTypeInfo *pOtherTypeInfoBlks; -- char *pAfterOTIBlks = NULL; - char *pNameTable, *ptr; -+ const BYTE *hlp_strings; - int i; - DWORD len, order; - ITypeInfoImpl **ppTypeInfoImpl; -@@ -4462,53 +4543,55 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) - len += 0x40; - - /* And now TypeInfoCount of SLTG_OtherTypeInfo */ -+ pTypeLibImpl->TypeInfoCount = *(WORD *)((char *)pLibBlk + len); -+ len += sizeof(WORD); - - pOtherTypeInfoBlks = calloc(pTypeLibImpl->TypeInfoCount, sizeof(*pOtherTypeInfoBlks)); - -- - ptr = (char*)pLibBlk + len; - - for(i = 0; i < pTypeLibImpl->TypeInfoCount; i++) { - WORD w, extra; - len = 0; - -- pOtherTypeInfoBlks[i].small_no = *(WORD*)ptr; -- -- w = *(WORD*)(ptr + 2); -+ w = *(WORD*)ptr; - if(w != 0xffff) { - len += w; -- pOtherTypeInfoBlks[i].index_name = malloc(w + 1); -- memcpy(pOtherTypeInfoBlks[i].index_name, ptr + 4, w); -+ pOtherTypeInfoBlks[i].index_name = malloc(w+1); -+ memcpy(pOtherTypeInfoBlks[i].index_name, ptr + 2, w); - pOtherTypeInfoBlks[i].index_name[w] = '\0'; - } -- w = *(WORD*)(ptr + 4 + len); -+ w = *(WORD*)(ptr + 2 + len); - if(w != 0xffff) { -- TRACE_(typelib)("\twith %s\n", debugstr_an(ptr + 6 + len, w)); -- len += w; -- pOtherTypeInfoBlks[i].other_name = malloc(w + 1); -- memcpy(pOtherTypeInfoBlks[i].other_name, ptr + 6 + len, w); -+ TRACE_(typelib)("\twith %s\n", debugstr_an(ptr + 4 + len, w)); -+ pOtherTypeInfoBlks[i].other_name = malloc(w+1); -+ memcpy(pOtherTypeInfoBlks[i].other_name, ptr + 4 + len, w); - pOtherTypeInfoBlks[i].other_name[w] = '\0'; -+ len += w; - } -- pOtherTypeInfoBlks[i].res1a = *(WORD*)(ptr + len + 6); -- pOtherTypeInfoBlks[i].name_offs = *(WORD*)(ptr + len + 8); -- extra = pOtherTypeInfoBlks[i].more_bytes = *(WORD*)(ptr + 10 + len); -+ pOtherTypeInfoBlks[i].res1a = *(WORD*)(ptr + 4 + len); -+ pOtherTypeInfoBlks[i].name_offs = *(WORD*)(ptr + 6 + len); -+ extra = pOtherTypeInfoBlks[i].hlpstr_len = *(WORD*)(ptr + 8 + len); - if(extra) { - pOtherTypeInfoBlks[i].extra = malloc(extra); -- memcpy(pOtherTypeInfoBlks[i].extra, ptr + 12, extra); -+ memcpy(pOtherTypeInfoBlks[i].extra, ptr + 10 + len, extra); - len += extra; - } -- pOtherTypeInfoBlks[i].res20 = *(WORD*)(ptr + 12 + len); -- pOtherTypeInfoBlks[i].helpcontext = *(DWORD*)(ptr + 14 + len); -- pOtherTypeInfoBlks[i].res26 = *(WORD*)(ptr + 18 + len); -- memcpy(&pOtherTypeInfoBlks[i].uuid, ptr + 20 + len, sizeof(GUID)); -+ pOtherTypeInfoBlks[i].res20 = *(WORD*)(ptr + 10 + len); -+ pOtherTypeInfoBlks[i].helpcontext = *(DWORD*)(ptr + 12 + len); -+ pOtherTypeInfoBlks[i].res26 = *(WORD*)(ptr + 16 + len); -+ memcpy(&pOtherTypeInfoBlks[i].uuid, ptr + 18 + len, sizeof(GUID)); -+ pOtherTypeInfoBlks[i].typekind = *(WORD*)(ptr + 18 + sizeof(GUID) + len); - len += sizeof(SLTG_OtherTypeInfo); - ptr += len; - } - -- pAfterOTIBlks = ptr; -+ /* Get the next DWORD */ -+ len = *(DWORD*)ptr; - -- /* Skip this WORD and get the next DWORD */ -- len = *(DWORD*)(pAfterOTIBlks + 2); -+ hlp_strings = (const BYTE *)ptr + sizeof(DWORD); -+ TRACE("max help string length %#x, help strings length %#lx\n", -+ *(WORD *)hlp_strings, *(DWORD *)(hlp_strings + 2)); - - /* Now add this to pLibBLk look at what we're pointing at and - possibly add 0x20, then add 0x216, sprinkle a bit a magic -@@ -4574,6 +4657,7 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) - (*ppTypeInfoImpl)->index = i; - (*ppTypeInfoImpl)->Name = SLTG_ReadName(pNameTable, pOtherTypeInfoBlks[i].name_offs, pTypeLibImpl); - (*ppTypeInfoImpl)->dwHelpContext = pOtherTypeInfoBlks[i].helpcontext; -+ (*ppTypeInfoImpl)->DocString = decode_string(hlp_strings, pOtherTypeInfoBlks[i].extra, pOtherTypeInfoBlks[i].hlpstr_len, pTypeLibImpl); - (*ppTypeInfoImpl)->guid = TLB_append_guid(&pTypeLibImpl->guid_list, &pOtherTypeInfoBlks[i].uuid, 2); - (*ppTypeInfoImpl)->typeattr.typekind = pTIHeader->typekind; - (*ppTypeInfoImpl)->typeattr.wMajorVerNum = pTIHeader->major_version; -diff --git a/dlls/oleaut32/typelib.h b/dlls/oleaut32/typelib.h -index 515d4b557e6..bfe908c035f 100644 ---- a/dlls/oleaut32/typelib.h -+++ b/dlls/oleaut32/typelib.h -@@ -382,18 +382,18 @@ typedef struct { - /* we then get 0x40 bytes worth of 0xffff or small numbers followed by - nrOfFileBlks - 2 of these */ - typedef struct { -- WORD small_no; - SLTG_Name index_name; /* This refers to a name in the directory */ - SLTG_Name other_name; /* Another one of these weird names */ - WORD res1a; /* 0xffff */ - WORD name_offs; /* offset to name in name table */ -- WORD more_bytes; /* if this is non-zero we get this many -+ WORD hlpstr_len; /* if this is non-zero we get this many - bytes before the next element, which seem - to reference the docstring of the type ? */ - WORD res20; /* 0xffff */ - DWORD helpcontext; - WORD res26; /* 0xffff */ - GUID uuid; -+ WORD typekind; - } SLTG_OtherTypeInfo; - - /* Next we get WORD 0x0003 followed by a DWORD which if we add to --- -2.40.1 - diff --git a/patches/widl-SLTG_Typelib_Support/0024-oleaut32-Add-support-for-decoding-SLTG-function-help.patch b/patches/widl-SLTG_Typelib_Support/0024-oleaut32-Add-support-for-decoding-SLTG-function-help.patch deleted file mode 100644 index 8dd862de..00000000 --- a/patches/widl-SLTG_Typelib_Support/0024-oleaut32-Add-support-for-decoding-SLTG-function-help.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 94e6e18f72a5586fc8077dadc4ea50bd994e02a3 Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov -Date: Tue, 26 Jan 2016 15:41:06 +0800 -Subject: [PATCH] oleaut32: Add support for decoding SLTG function help - strings. - ---- - dlls/oleaut32/typelib.c | 24 ++++++++++++++---------- - 1 file changed, 14 insertions(+), 10 deletions(-) - -diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c -index 988e6c1b457..9c15254727d 100644 ---- a/dlls/oleaut32/typelib.c -+++ b/dlls/oleaut32/typelib.c -@@ -4199,7 +4199,8 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign - } - - static void SLTG_DoFuncs(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, -- unsigned short cFuncs, char *pNameTable, const sltg_ref_lookup_t *ref_lookup) -+ unsigned short cFuncs, char *pNameTable, const sltg_ref_lookup_t *ref_lookup, -+ const BYTE *hlp_strings) - { - SLTG_Function *pFunc; - unsigned short i; -@@ -4240,6 +4241,9 @@ static void SLTG_DoFuncs(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, - else - pFuncDesc->funcdesc.oVft = (unsigned short)(pFunc->vtblpos & ~1) * sizeof(void *) / pTI->pTypeLib->ptr_size; - -+ if (pFunc->helpstring != 0xffff) -+ pFuncDesc->HelpString = decode_string(hlp_strings, pBlk + pFunc->helpstring, pNameTable - pBlk, pTI->pTypeLib); -+ - if(pFunc->magic & SLTG_FUNCTION_FLAGS_PRESENT) - pFuncDesc->funcdesc.wFuncFlags = pFunc->funcflags; - -@@ -4326,7 +4330,7 @@ static void SLTG_ProcessCoClass(char *pBlk, ITypeInfoImpl *pTI, - - static void SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, - char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, -- const SLTG_TypeInfoTail *pTITail) -+ const SLTG_TypeInfoTail *pTITail, const BYTE *hlp_strings) - { - char *pFirstItem; - sltg_ref_lookup_t *ref_lookup = NULL; -@@ -4343,7 +4347,7 @@ static void SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, - } - - if (pTITail->funcs_off != 0xffff) -- SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable, ref_lookup); -+ SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable, ref_lookup, hlp_strings); - - free(ref_lookup); - -@@ -4388,7 +4392,7 @@ static void SLTG_ProcessAlias(char *pBlk, ITypeInfoImpl *pTI, - - static void SLTG_ProcessDispatch(char *pBlk, ITypeInfoImpl *pTI, - char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, -- const SLTG_TypeInfoTail *pTITail) -+ const SLTG_TypeInfoTail *pTITail, const BYTE *hlp_strings) - { - sltg_ref_lookup_t *ref_lookup = NULL; - if (pTIHeader->href_table != 0xffffffff) -@@ -4399,7 +4403,7 @@ static void SLTG_ProcessDispatch(char *pBlk, ITypeInfoImpl *pTI, - SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, ref_lookup); - - if (pTITail->funcs_off != 0xffff) -- SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable, ref_lookup); -+ SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable, ref_lookup, hlp_strings); - - if (pTITail->impls_off != 0xffff) - SLTG_DoImpls(pBlk + pTITail->impls_off, pTI, FALSE, ref_lookup); -@@ -4423,7 +4427,7 @@ static void SLTG_ProcessEnum(char *pBlk, ITypeInfoImpl *pTI, - - static void SLTG_ProcessModule(char *pBlk, ITypeInfoImpl *pTI, - char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, -- const SLTG_TypeInfoTail *pTITail) -+ const SLTG_TypeInfoTail *pTITail, const BYTE *hlp_strings) - { - sltg_ref_lookup_t *ref_lookup = NULL; - if (pTIHeader->href_table != 0xffffffff) -@@ -4434,7 +4438,7 @@ static void SLTG_ProcessModule(char *pBlk, ITypeInfoImpl *pTI, - SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, ref_lookup); - - if (pTITail->funcs_off != 0xffff) -- SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable, ref_lookup); -+ SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable, ref_lookup, hlp_strings); - free(ref_lookup); - if (TRACE_ON(typelib)) - dump_TypeInfo(pTI); -@@ -4696,7 +4700,7 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) - - case TKIND_INTERFACE: - SLTG_ProcessInterface((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, -- pTIHeader, pTITail); -+ pTIHeader, pTITail, hlp_strings); - break; - - case TKIND_COCLASS: -@@ -4711,12 +4715,12 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) - - case TKIND_DISPATCH: - SLTG_ProcessDispatch((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, -- pTIHeader, pTITail); -+ pTIHeader, pTITail, hlp_strings); - break; - - case TKIND_MODULE: - SLTG_ProcessModule((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, -- pTIHeader, pTITail); -+ pTIHeader, pTITail, hlp_strings); - break; - - default: --- -2.43.0 - diff --git a/patches/widl-SLTG_Typelib_Support/0025-oleaut32-Add-support-for-decoding-SLTG-variable-help.patch b/patches/widl-SLTG_Typelib_Support/0025-oleaut32-Add-support-for-decoding-SLTG-variable-help.patch deleted file mode 100644 index 88cd7cc1..00000000 --- a/patches/widl-SLTG_Typelib_Support/0025-oleaut32-Add-support-for-decoding-SLTG-variable-help.patch +++ /dev/null @@ -1,96 +0,0 @@ -From 259d6774b0b769956c33382a4260ae5278e54b85 Mon Sep 17 00:00:00 2001 -From: Dmitry Timoshkov -Date: Tue, 26 Jan 2016 16:17:21 +0800 -Subject: [PATCH] oleaut32: Add support for decoding SLTG variable help - strings. - ---- - dlls/oleaut32/typelib.c | 24 +++++++++++++++--------- - 1 file changed, 15 insertions(+), 9 deletions(-) - -diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c -index ff1506856e2..ee15996dea5 100644 ---- a/dlls/oleaut32/typelib.c -+++ b/dlls/oleaut32/typelib.c -@@ -4086,7 +4086,7 @@ static char *SLTG_DoImpls(char *pBlk, ITypeInfoImpl *pTI, - } - - static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsigned short cVars, -- const char *pNameTable, const sltg_ref_lookup_t *ref_lookup) -+ const char *pNameTable, const sltg_ref_lookup_t *ref_lookup, const BYTE *hlp_strings) - { - TLBVarDesc *pVarDesc; - const TLBString *prevName = NULL; -@@ -4116,6 +4116,12 @@ static void SLTG_DoVars(char *pBlk, char *pFirstItem, ITypeInfoImpl *pTI, unsign - TRACE_(typelib)("byte_offs = 0x%x\n", pItem->byte_offs); - TRACE_(typelib)("memid = %#lx\n", pItem->memid); - -+ if (pItem->helpstring != 0xffff) -+ { -+ pVarDesc->HelpString = decode_string(hlp_strings, pBlk + pItem->helpstring, pNameTable - pBlk, pTI->pTypeLib); -+ TRACE_(typelib)("helpstring = %s\n", debugstr_w(pVarDesc->HelpString->str)); -+ } -+ - if(pItem->flags & 0x02) - pType = &pItem->type; - else -@@ -4355,9 +4361,9 @@ static void SLTG_ProcessInterface(char *pBlk, ITypeInfoImpl *pTI, - - static void SLTG_ProcessRecord(char *pBlk, ITypeInfoImpl *pTI, - const char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, -- const SLTG_TypeInfoTail *pTITail) -+ const SLTG_TypeInfoTail *pTITail, const BYTE *hlp_strings) - { -- SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, NULL); -+ SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, NULL, hlp_strings); - } - - static void SLTG_ProcessAlias(char *pBlk, ITypeInfoImpl *pTI, -@@ -4398,7 +4404,7 @@ static void SLTG_ProcessDispatch(char *pBlk, ITypeInfoImpl *pTI, - pNameTable); - - if (pTITail->vars_off != 0xffff) -- SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, ref_lookup); -+ SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, ref_lookup, hlp_strings); - - if (pTITail->funcs_off != 0xffff) - SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable, ref_lookup, hlp_strings); -@@ -4418,9 +4424,9 @@ static void SLTG_ProcessDispatch(char *pBlk, ITypeInfoImpl *pTI, - - static void SLTG_ProcessEnum(char *pBlk, ITypeInfoImpl *pTI, - const char *pNameTable, SLTG_TypeInfoHeader *pTIHeader, -- const SLTG_TypeInfoTail *pTITail) -+ const SLTG_TypeInfoTail *pTITail, const BYTE *hlp_strings) - { -- SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, NULL); -+ SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, NULL, hlp_strings); - } - - static void SLTG_ProcessModule(char *pBlk, ITypeInfoImpl *pTI, -@@ -4433,7 +4439,7 @@ static void SLTG_ProcessModule(char *pBlk, ITypeInfoImpl *pTI, - pNameTable); - - if (pTITail->vars_off != 0xffff) -- SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, ref_lookup); -+ SLTG_DoVars(pBlk, pBlk + pTITail->vars_off, pTI, pTITail->cVars, pNameTable, ref_lookup, hlp_strings); - - if (pTITail->funcs_off != 0xffff) - SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable, ref_lookup, hlp_strings); -@@ -4688,12 +4694,12 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength) - switch(pTIHeader->typekind) { - case TKIND_ENUM: - SLTG_ProcessEnum((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, -- pTIHeader, pTITail); -+ pTIHeader, pTITail, hlp_strings); - break; - - case TKIND_RECORD: - SLTG_ProcessRecord((char *)(pMemHeader + 1), *ppTypeInfoImpl, pNameTable, -- pTIHeader, pTITail); -+ pTIHeader, pTITail, hlp_strings); - break; - - case TKIND_INTERFACE: --- -2.34.1 - diff --git a/patches/widl-SLTG_Typelib_Support/definition b/patches/widl-SLTG_Typelib_Support/definition deleted file mode 100644 index 25e2af52..00000000 --- a/patches/widl-SLTG_Typelib_Support/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: Implement support for SLTG typelibs in widl diff --git a/staging/upstream-commit b/staging/upstream-commit index c564c442..453e5c8f 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -59720e7d1b88ed519569135542aa55145a2a6ff7 +a46043015322bf8e6c78a74bd33300f3478767e3