From 64410e5907443ef8f8e0d4a1f96b6098101ac2af Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alex=20Villac=C3=ADs=20Lasso?= Date: Wed, 8 Nov 2006 19:33:46 -0500 Subject: [PATCH] oleaut32: typelib - fix regression in MSFT typelib parsing. --- dlls/oleaut32/typelib.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c index 92532f53951..a12deb13a8b 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c @@ -1173,7 +1173,7 @@ static void dump_TLBFuncDescOne(const TLBFuncDesc * pfd) dump_FUNCDESC(&(pfd->funcdesc)); MESSAGE("\thelpstring: %s\n", debugstr_w(pfd->HelpString)); - MESSAGE("\tentry: %s\n", debugstr_w(pfd->Entry)); + MESSAGE("\tentry: %s\n", (pfd->Entry == (void *)-1) ? "invalid" : debugstr_w(pfd->Entry)); } static void dump_TLBFuncDesc(const TLBFuncDesc * pfd) { @@ -1813,7 +1813,9 @@ MSFT_DoFuncs(TLBContext* pcx, { if ( pFuncRec->FKCCIC & 0x2000 ) { - (*pptfd)->Entry = SysAllocString((WCHAR*)pFuncRec->OptAttr[2]); + if (HIWORD(pFuncRec->OptAttr[2]) != 0) + ERR("ordinal 0x%08x invalid, HIWORD != 0\n", pFuncRec->OptAttr[2]); + (*pptfd)->Entry = (BSTR)pFuncRec->OptAttr[2]; } else { @@ -1832,6 +1834,10 @@ MSFT_DoFuncs(TLBContext* pcx, } } } + else + { + (*pptfd)->Entry = (BSTR)-1; + } } } @@ -4437,7 +4443,8 @@ static ULONG WINAPI ITypeInfo_fnRelease(ITypeInfo2 *iface) pCustDataNext = pCustData->next; TLB_Free(pCustData); } - SysFreeString(pFInfo->Entry); + if (HIWORD(pFInfo->Entry) != 0 && pFInfo->Entry != (BSTR)-1) + SysFreeString(pFInfo->Entry); SysFreeString(pFInfo->HelpString); SysFreeString(pFInfo->Name); -- 2.11.4.GIT