[PATCH 1/2] shell32: Simplify the creation of an IEnumIDList.
Michael Stefaniuc
mstefani at redhat.de
Tue Mar 25 17:33:45 CDT 2014
---
dlls/shell32/shfldr_unixfs.c | 24 +++++++++---------------
1 file changed, 9 insertions(+), 15 deletions(-)
diff --git a/dlls/shell32/shfldr_unixfs.c b/dlls/shell32/shfldr_unixfs.c
index 10b2879..3e8ad1e 100644
--- a/dlls/shell32/shfldr_unixfs.c
+++ b/dlls/shell32/shfldr_unixfs.c
@@ -971,14 +971,12 @@ static HRESULT WINAPI ShellFolder2_ParseDisplayName(IShellFolder2* iface, HWND h
return result;
}
-static IUnknown *UnixSubFolderIterator_Constructor(UnixFolder *pUnixFolder, SHCONTF fFilter);
+static IEnumIDList *UnixSubFolderIterator_Constructor(UnixFolder *pUnixFolder, SHCONTF fFilter);
static HRESULT WINAPI ShellFolder2_EnumObjects(IShellFolder2* iface, HWND hwndOwner,
SHCONTF grfFlags, IEnumIDList** ppEnumIDList)
{
UnixFolder *This = impl_from_IShellFolder2(iface);
- IUnknown *newIterator;
- HRESULT hr;
TRACE("(%p)->(%p 0x%08x %p)\n", This, hwndOwner, grfFlags, ppEnumIDList);
@@ -987,11 +985,8 @@ static HRESULT WINAPI ShellFolder2_EnumObjects(IShellFolder2* iface, HWND hwndOw
return E_UNEXPECTED;
}
- newIterator = UnixSubFolderIterator_Constructor(This, grfFlags);
- hr = IUnknown_QueryInterface(newIterator, &IID_IEnumIDList, (void**)ppEnumIDList);
- IUnknown_Release(newIterator);
-
- return hr;
+ *ppEnumIDList = UnixSubFolderIterator_Constructor(This, grfFlags);
+ return S_OK;
}
static HRESULT CreateUnixFolder(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppv, const CLSID *pCLSID);
@@ -2521,21 +2516,20 @@ static const IEnumIDListVtbl UnixSubFolderIterator_IEnumIDList_Vtbl = {
UnixSubFolderIterator_IEnumIDList_Clone
};
-static IUnknown *UnixSubFolderIterator_Constructor(UnixFolder *pUnixFolder, SHCONTF fFilter) {
+static IEnumIDList *UnixSubFolderIterator_Constructor(UnixFolder *pUnixFolder, SHCONTF fFilter)
+{
UnixSubFolderIterator *iterator;
TRACE("(pUnixFolder=%p)\n", pUnixFolder);
-
- iterator = SHAlloc((ULONG)sizeof(UnixSubFolderIterator));
+
+ iterator = SHAlloc(sizeof(*iterator));
iterator->lpIEnumIDListVtbl = &UnixSubFolderIterator_IEnumIDList_Vtbl;
- iterator->m_cRef = 0;
+ iterator->m_cRef = 1;
iterator->m_fFilter = fFilter;
iterator->m_dirFolder = opendir(pUnixFolder->m_pszPath);
lstrcpyA(iterator->m_szFolder, pUnixFolder->m_pszPath);
- UnixSubFolderIterator_IEnumIDList_AddRef((IEnumIDList*)iterator);
-
- return (IUnknown*)iterator;
+ return (IEnumIDList*)iterator;
}
#else /* __MINGW32__ || _MSC_VER */
--
1.8.3.1
More information about the wine-patches
mailing list