LPITEMIDLIST pidlParent, pidlChild;
HIMAGELIST hImageList;
HRESULT hr;
- IShellFolder *lpsfParent, *lpsfRoot;
- IEnumIDList * pEnumChildren = NULL;
+ CComPtr<IShellFolder> lpsfParent;
+ CComPtr<IShellFolder> lpsfRoot;
+ CComPtr<IEnumIDList> pEnumChildren;
HTREEITEM item;
DWORD flags;
LPCITEMIDLIST root = info->lpBrowseInfo->pidlRoot;
hr = lpsfParent->BindToObject(pidlChild, 0, IID_PPV_ARG(IShellFolder, &lpsfRoot));
} else {
lpsfRoot = lpsfParent;
- hr = lpsfParent->AddRef();
}
if (FAILED(hr)) {
WARN("Could not bind to root shell folder! hr = %08x\n", hr);
- lpsfParent->Release();
ILFree(pidlChild);
ILFree(pidlParent);
return;
hr = lpsfRoot->EnumObjects(info->hWnd, flags, &pEnumChildren );
if (FAILED(hr)) {
WARN("Could not get child iterator! hr = %08x\n", hr);
- lpsfParent->Release();
- lpsfRoot->Release();
ILFree(pidlChild);
ILFree(pidlParent);
return;
ILFree(pidlChild);
ILFree(pidlParent);
- lpsfRoot->Release();
- lpsfParent->Release();
}
static int GetIcon(LPCITEMIDLIST lpi, UINT uFlags)
tvi.lParam = (LPARAM)lptvid;
lpsf->AddRef();
+ pEnumIL->AddRef();
lptvid->lpsfParent = lpsf;
lptvid->lpi = ILClone(pidl);
lptvid->lpifq = pidlParent ? ILCombine(pidlParent, pidl) : ILClone(pidl);
while (S_OK == lpe->Next(1,&pidlTemp,&ulFetched))
{
ULONG ulAttrs = SFGAO_HASSUBFOLDER | SFGAO_FOLDER;
- IEnumIDList* pEnumIL = NULL;
- IShellFolder* pSFChild = NULL;
+ CComPtr<IEnumIDList> pEnumIL;
+ CComPtr<IShellFolder> pSFChild;
lpsf->GetAttributesOf(1, (LPCITEMIDLIST*)&pidlTemp, &ulAttrs);
if (ulAttrs & SFGAO_FOLDER)
{
if ((pEnumIL->Skip(1) != S_OK) ||
FAILED(pEnumIL->Reset()))
{
- pEnumIL->Release();
pEnumIL = NULL;
}
}
- pSFChild->Release();
}
}
static LRESULT BrsFolder_Treeview_Expand( browse_info *info, NMTREEVIEWW *pnmtv )
{
- IShellFolder *lpsf2 = NULL;
+ CComPtr<IShellFolder> lpsf2;
LPTV_ITEMDATA lptvid = (LPTV_ITEMDATA) pnmtv->itemNew.lParam;
HRESULT r;