mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 00:13:57 +00:00
[SHELL32] - CStartMenu: Add missing checks for failure and make some checks noisy. CORE-12300
svn path=/trunk/; revision=73189
This commit is contained in:
parent
0125f9192d
commit
8632758e52
|
@ -167,6 +167,8 @@ private:
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
hr = pShellMenu->Initialize(this, 0, ANCESTORDEFAULT, SMINIT_VERTICAL);
|
hr = pShellMenu->Initialize(this, 0, ANCESTORDEFAULT, SMINIT_VERTICAL);
|
||||||
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
switch (psmd->uId)
|
switch (psmd->uId)
|
||||||
{
|
{
|
||||||
|
@ -188,11 +190,22 @@ private:
|
||||||
LPITEMIDLIST pidlStartMenu;
|
LPITEMIDLIST pidlStartMenu;
|
||||||
IShellFolder *psfDestop;
|
IShellFolder *psfDestop;
|
||||||
hr = SHGetFolderLocation(NULL, csidl, 0, 0, &pidlStartMenu);
|
hr = SHGetFolderLocation(NULL, csidl, 0, 0, &pidlStartMenu);
|
||||||
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
hr = SHGetDesktopFolder(&psfDestop);
|
hr = SHGetDesktopFolder(&psfDestop);
|
||||||
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
hr = psfDestop->BindToObject(pidlStartMenu, NULL, IID_PPV_ARG(IShellFolder, &psfStartMenu));
|
hr = psfDestop->BindToObject(pidlStartMenu, NULL, IID_PPV_ARG(IShellFolder, &psfStartMenu));
|
||||||
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
hr = pShellMenu->SetShellFolder(psfStartMenu, NULL, NULL, 0);
|
hr = pShellMenu->SetShellFolder(psfStartMenu, NULL, NULL, 0);
|
||||||
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -202,6 +215,8 @@ private:
|
||||||
if (GetMenuItemInfoW(psmd->hmenu, psmd->uId, FALSE, &mii))
|
if (GetMenuItemInfoW(psmd->hmenu, psmd->uId, FALSE, &mii))
|
||||||
{
|
{
|
||||||
hr = pShellMenu->SetMenu(mii.hSubMenu, NULL, SMSET_BOTTOM);
|
hr = pShellMenu->SetMenu(mii.hSubMenu, NULL, SMSET_BOTTOM);
|
||||||
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
|
return hr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return pShellMenu->QueryInterface(iid, pv);
|
return pShellMenu->QueryInterface(iid, pv);
|
||||||
|
@ -475,7 +490,7 @@ CStartMenu_Constructor(REFIID riid, void **ppv)
|
||||||
/* psf is a merged folder, so now we want to get the pidl of the programs item from the merged folder */
|
/* psf is a merged folder, so now we want to get the pidl of the programs item from the merged folder */
|
||||||
{
|
{
|
||||||
hr = SHGetSpecialFolderLocation(NULL, CSIDL_PROGRAMS, &pidlProgramsAbsolute);
|
hr = SHGetSpecialFolderLocation(NULL, CSIDL_PROGRAMS, &pidlProgramsAbsolute);
|
||||||
if (FAILED(hr))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
{
|
{
|
||||||
WARN("USER Programs folder not found.");
|
WARN("USER Programs folder not found.");
|
||||||
hr = SHGetSpecialFolderLocation(NULL, CSIDL_COMMON_PROGRAMS, &pidlProgramsAbsolute);
|
hr = SHGetSpecialFolderLocation(NULL, CSIDL_COMMON_PROGRAMS, &pidlProgramsAbsolute);
|
||||||
|
@ -489,11 +504,11 @@ CStartMenu_Constructor(REFIID riid, void **ppv)
|
||||||
TCHAR szDisplayName[MAX_PATH];
|
TCHAR szDisplayName[MAX_PATH];
|
||||||
|
|
||||||
hr = SHBindToParent(pidlProgramsAbsolute, IID_PPV_ARG(IShellFolder, &psfParent), &pcidlPrograms);
|
hr = SHBindToParent(pidlProgramsAbsolute, IID_PPV_ARG(IShellFolder, &psfParent), &pcidlPrograms);
|
||||||
if (FAILED(hr))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
hr = psfParent->GetDisplayNameOf(pcidlPrograms, SHGDN_FORPARSING | SHGDN_INFOLDER, &str);
|
hr = psfParent->GetDisplayNameOf(pcidlPrograms, SHGDN_FORPARSING | SHGDN_INFOLDER, &str);
|
||||||
if (FAILED(hr))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
StrRetToBuf(&str, pcidlPrograms, szDisplayName, _countof(szDisplayName));
|
StrRetToBuf(&str, pcidlPrograms, szDisplayName, _countof(szDisplayName));
|
||||||
|
@ -501,7 +516,7 @@ CStartMenu_Constructor(REFIID riid, void **ppv)
|
||||||
|
|
||||||
/* We got the display name from the fs folder and we parse it with the merged folder here */
|
/* We got the display name from the fs folder and we parse it with the merged folder here */
|
||||||
hr = psf->ParseDisplayName(NULL, NULL, szDisplayName, NULL, &pidlPrograms, NULL);
|
hr = psf->ParseDisplayName(NULL, NULL, szDisplayName, NULL, &pidlPrograms, NULL);
|
||||||
if (FAILED(hr))
|
if (FAILED_UNEXPECTEDLY(hr))
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue