[BROWSEUI] Fix CSHEnumClassesOfCategories::Initialize() parameters validation. (#1559)

CORE-11711
This commit is contained in:
Hermès Bélusca-Maïto 2019-06-06 16:33:44 +02:00
parent d6d1efe731
commit fdfef818ef
No known key found for this signature in database
GPG Key ID: 3B2539C65E7B93D0

View File

@ -254,17 +254,16 @@ HRESULT CSHEnumClassesOfCategories::Initialize(ULONG cImplemented, CATID *pImple
if (!fDsa)
return E_FAIL;
if (cRequired > 0 || cImplemented == (ULONG)-1)
{
FIXME("Implement required categories class enumeration\n");
return E_NOTIMPL;
}
// Parameter validation:
// - We must have at least one category to manage.
// - The array pointers must not be NULL if there is a non-zero
// element count specified for them.
if (cImplemented == 0 && cRequired == 0)
return E_INVALIDARG;
if ((cImplemented && !pImplemented) || (cRequired && !pRequired))
return E_INVALIDARG;
// Don't do anything if we have nothing
if (cRequired == 0 && cImplemented == (ULONG)-1)
return E_FAIL;
// For each implemented category, create a cache and add it to our local DSA
// For each implemented category, create a cache and add it to our local DSA.
for (i = 0; i < cImplemented; i++)
{
CComCatCachedCategory cachedCat;
@ -273,6 +272,17 @@ HRESULT CSHEnumClassesOfCategories::Initialize(ULONG cImplemented, CATID *pImple
return hr;
cachedCat.WriteCacheToDSA(fDsa);
}
// TODO: Implement caching of the required categories.
if (cRequired > 0)
{
FIXME("Implement required categories class enumeration\n");
// Only fail in case we didn't look at the implemented categories.
if (cImplemented == 0)
return E_NOTIMPL;
}
return S_OK;
}