Revert "oleaut32: Implement TLB dependencies lookup in resources."
This reverts commit 9e4590ff67
.
The tests don't confirm it. The real issue is probably addressed by
the typelib cache.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
5f8e3a0c74
commit
f0f985b38c
|
@ -7878,44 +7878,6 @@ static HRESULT ITypeInfoImpl_GetDispatchRefTypeInfo( ITypeInfo *iface,
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct search_res_tlb_params
|
|
||||||
{
|
|
||||||
const GUID *guid;
|
|
||||||
ITypeLib *pTLib;
|
|
||||||
};
|
|
||||||
|
|
||||||
static BOOL CALLBACK search_res_tlb(HMODULE hModule, LPCWSTR lpszType, LPWSTR lpszName, LONG_PTR lParam)
|
|
||||||
{
|
|
||||||
struct search_res_tlb_params *params = (LPVOID)lParam;
|
|
||||||
WCHAR szPath[MAX_PATH+1];
|
|
||||||
ITypeLib *pTLib = NULL;
|
|
||||||
HRESULT ret;
|
|
||||||
DWORD len;
|
|
||||||
|
|
||||||
if (IS_INTRESOURCE(lpszName) == FALSE)
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
if (!(len = GetModuleFileNameW(hModule, szPath, MAX_PATH)))
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
if (swprintf(szPath + len, ARRAY_SIZE(szPath) - len, L"\\%d", LOWORD(lpszName)) < 0)
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
ret = LoadTypeLibEx(szPath, REGKIND_NONE, &pTLib);
|
|
||||||
if (SUCCEEDED(ret))
|
|
||||||
{
|
|
||||||
ITypeLibImpl *impl = impl_from_ITypeLib(pTLib);
|
|
||||||
if (IsEqualGUID(params->guid, impl->guid))
|
|
||||||
{
|
|
||||||
params->pTLib = pTLib;
|
|
||||||
return FALSE; /* stop enumeration */
|
|
||||||
}
|
|
||||||
ITypeLib_Release(pTLib);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ITypeInfo::GetRefTypeInfo
|
/* ITypeInfo::GetRefTypeInfo
|
||||||
*
|
*
|
||||||
* If a type description references other type descriptions, it retrieves
|
* If a type description references other type descriptions, it retrieves
|
||||||
|
@ -8033,23 +7995,6 @@ static HRESULT WINAPI ITypeInfo_fnGetRefTypeInfo(
|
||||||
}
|
}
|
||||||
LeaveCriticalSection(&cache_section);
|
LeaveCriticalSection(&cache_section);
|
||||||
|
|
||||||
if (!pTLib)
|
|
||||||
{
|
|
||||||
struct search_res_tlb_params params;
|
|
||||||
|
|
||||||
TRACE("typeinfo in imported typelib that isn't already loaded\n");
|
|
||||||
|
|
||||||
/* Search in resource table */
|
|
||||||
params.guid = TLB_get_guid_null(ref_type->pImpTLInfo->guid);
|
|
||||||
params.pTLib = NULL;
|
|
||||||
EnumResourceNamesW(NULL, L"TYPELIB", search_res_tlb, (LONG_PTR)¶ms);
|
|
||||||
if(params.pTLib)
|
|
||||||
{
|
|
||||||
pTLib = params.pTLib;
|
|
||||||
result = S_OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!pTLib)
|
if (!pTLib)
|
||||||
{
|
{
|
||||||
BSTR libnam;
|
BSTR libnam;
|
||||||
|
|
Loading…
Reference in New Issue