-- v3: include: Annotate SHAlloc with __WINE_(DEALLOC|MALLOC). shell32: Free item lists with ILFree.
From: Alex Henrie alexhenrie24@gmail.com
--- dlls/shell32/clipboard.c | 4 ++-- dlls/shell32/cpanelfolder.c | 6 +++--- dlls/shell32/pidl.c | 2 +- dlls/shell32/shfldr_desktop.c | 6 +++--- dlls/shell32/shfldr_fs.c | 8 ++++---- dlls/shell32/shfldr_mycomp.c | 6 +++--- dlls/shell32/shfldr_netplaces.c | 4 ++-- dlls/shell32/shlview_cmenu.c | 4 ++-- 8 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/dlls/shell32/clipboard.c b/dlls/shell32/clipboard.c index 2f5c63bed9d..487fd0dcf8c 100644 --- a/dlls/shell32/clipboard.c +++ b/dlls/shell32/clipboard.c @@ -165,7 +165,7 @@ HGLOBAL RenderFILENAMEA (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl) return 0;
bSuccess = SHGetPathFromIDListA(pidl, szTemp); - SHFree(pidl); + ILFree(pidl); if (!bSuccess) return 0;
@@ -197,7 +197,7 @@ HGLOBAL RenderFILENAMEW (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl) return 0;
bSuccess = SHGetPathFromIDListW(pidl, szTemp); - SHFree(pidl); + ILFree(pidl); if (!bSuccess) return 0;
diff --git a/dlls/shell32/cpanelfolder.c b/dlls/shell32/cpanelfolder.c index a03f1c3d38c..69af6734f57 100644 --- a/dlls/shell32/cpanelfolder.c +++ b/dlls/shell32/cpanelfolder.c @@ -636,18 +636,18 @@ static HRESULT WINAPI ISF_ControlPanel_fnGetUIObjectOf(IShellFolder2 *iface, HWN } else if (IsEqualIID(riid, &IID_IExtractIconA) &&(cidl == 1)) { pidl = ILCombine(This->pidlRoot, apidl[0]); pObj = (LPUNKNOWN) IExtractIconA_Constructor(pidl); - SHFree(pidl); + ILFree(pidl); hr = S_OK; } else if (IsEqualIID(riid, &IID_IExtractIconW) &&(cidl == 1)) { pidl = ILCombine(This->pidlRoot, apidl[0]); pObj = (LPUNKNOWN) IExtractIconW_Constructor(pidl); - SHFree(pidl); + ILFree(pidl); hr = S_OK; } else if ((IsEqualIID(riid,&IID_IShellLinkW) || IsEqualIID(riid,&IID_IShellLinkA)) && (cidl == 1)) { pidl = ILCombine(This->pidlRoot, apidl[0]); hr = IShellLink_ConstructFromFile(NULL, riid, pidl, &pObj); - SHFree(pidl); + ILFree(pidl); } else { hr = E_NOINTERFACE; } diff --git a/dlls/shell32/pidl.c b/dlls/shell32/pidl.c index a7b5b60b270..9878ef9811e 100644 --- a/dlls/shell32/pidl.c +++ b/dlls/shell32/pidl.c @@ -1328,7 +1328,7 @@ HRESULT WINAPI SHBindToFolderIDListParent(IShellFolder *psf, LPCITEMIDLIST pidl, LPITEMIDLIST pidlParent = ILClone(pidl); ILRemoveLastID(pidlParent); hr = IShellFolder_BindToObject(psf, pidlParent, NULL, riid, ppv); - SHFree (pidlParent); + ILFree(pidlParent); }
if (psfDesktop) diff --git a/dlls/shell32/shfldr_desktop.c b/dlls/shell32/shfldr_desktop.c index 3ebd8806808..49de36aa741 100644 --- a/dlls/shell32/shfldr_desktop.c +++ b/dlls/shell32/shfldr_desktop.c @@ -530,14 +530,14 @@ static HRESULT WINAPI ISF_Desktop_fnGetUIObjectOf (IShellFolder2 * iface, { pidl = ILCombine (This->pidlRoot, apidl[0]); pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); - SHFree (pidl); + ILFree(pidl); hr = S_OK; } else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine (This->pidlRoot, apidl[0]); pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); - SHFree (pidl); + ILFree(pidl); hr = S_OK; } else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) @@ -550,7 +550,7 @@ static HRESULT WINAPI ISF_Desktop_fnGetUIObjectOf (IShellFolder2 * iface, { pidl = ILCombine (This->pidlRoot, apidl[0]); hr = IShellLink_ConstructFromFile(NULL, riid, pidl, &pObj); - SHFree (pidl); + ILFree(pidl); } else hr = E_NOINTERFACE; diff --git a/dlls/shell32/shfldr_fs.c b/dlls/shell32/shfldr_fs.c index b1acfe2ded5..32de9ab6ef1 100644 --- a/dlls/shell32/shfldr_fs.c +++ b/dlls/shell32/shfldr_fs.c @@ -710,12 +710,12 @@ IShellFolder_fnGetUIObjectOf (IShellFolder2 * iface, } else if (IsEqualIID (riid, &IID_IExtractIconA) && (cidl == 1)) { pidl = ILCombine (This->pidlRoot, apidl[0]); pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); - SHFree (pidl); + ILFree(pidl); hr = S_OK; } else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine (This->pidlRoot, apidl[0]); pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); - SHFree (pidl); + ILFree(pidl); hr = S_OK; } else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) { hr = IShellFolder2_QueryInterface (iface, &IID_IDropTarget, @@ -724,7 +724,7 @@ IShellFolder_fnGetUIObjectOf (IShellFolder2 * iface, IsEqualIID(riid,&IID_IShellLinkA)) && (cidl == 1)) { pidl = ILCombine (This->pidlRoot, apidl[0]); hr = IShellLink_ConstructFromFile(NULL, riid, pidl, &pObj); - SHFree (pidl); + ILFree(pidl); } else { hr = E_NOINTERFACE; } @@ -1305,7 +1305,7 @@ ISFHelper_fnDeleteItems (ISFHelper * iface, UINT cidl, LPCITEMIDLIST * apidl) { LPITEMIDLIST pidl = ILCombine(This->pidlRoot, apidl[i]); SHChangeNotify(wEventId, SHCNF_IDLIST, pidl, NULL); - SHFree(pidl); + ILFree(pidl); }
wszCurrentPath += lstrlenW(wszCurrentPath)+1; diff --git a/dlls/shell32/shfldr_mycomp.c b/dlls/shell32/shfldr_mycomp.c index 0f7408e1fae..6d24a8e5c9e 100644 --- a/dlls/shell32/shfldr_mycomp.c +++ b/dlls/shell32/shfldr_mycomp.c @@ -527,14 +527,14 @@ static HRESULT WINAPI ISF_MyComputer_fnGetUIObjectOf (IShellFolder2 * iface, { pidl = ILCombine (This->pidlRoot, apidl[0]); pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); - SHFree (pidl); + ILFree(pidl); hr = S_OK; } else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine (This->pidlRoot, apidl[0]); pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); - SHFree (pidl); + ILFree(pidl); hr = S_OK; } else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) @@ -547,7 +547,7 @@ static HRESULT WINAPI ISF_MyComputer_fnGetUIObjectOf (IShellFolder2 * iface, { pidl = ILCombine (This->pidlRoot, apidl[0]); hr = IShellLink_ConstructFromFile(NULL, riid, pidl, &pObj); - SHFree (pidl); + ILFree(pidl); } else hr = E_NOINTERFACE; diff --git a/dlls/shell32/shfldr_netplaces.c b/dlls/shell32/shfldr_netplaces.c index 5f5ec43491c..0a48a000bcd 100644 --- a/dlls/shell32/shfldr_netplaces.c +++ b/dlls/shell32/shfldr_netplaces.c @@ -424,14 +424,14 @@ static HRESULT WINAPI ISF_NetworkPlaces_fnGetUIObjectOf (IShellFolder2 * iface, { pidl = ILCombine (This->pidlRoot, apidl[0]); pObj = (LPUNKNOWN) IExtractIconA_Constructor (pidl); - SHFree (pidl); + ILFree(pidl); hr = S_OK; } else if (IsEqualIID (riid, &IID_IExtractIconW) && (cidl == 1)) { pidl = ILCombine (This->pidlRoot, apidl[0]); pObj = (LPUNKNOWN) IExtractIconW_Constructor (pidl); - SHFree (pidl); + ILFree(pidl); hr = S_OK; } else if (IsEqualIID (riid, &IID_IDropTarget) && (cidl >= 1)) diff --git a/dlls/shell32/shlview_cmenu.c b/dlls/shell32/shlview_cmenu.c index b4cc56321ef..87d25794898 100644 --- a/dlls/shell32/shlview_cmenu.c +++ b/dlls/shell32/shlview_cmenu.c @@ -282,7 +282,7 @@ static void DoOpenExplore(ContextMenu *This, HWND hwnd, LPCSTR verb) sei.nShow = SW_SHOWNORMAL; sei.lpVerb = verb; ShellExecuteExA(&sei); - SHFree(pidlFQ); + ILFree(pidlFQ); }
/************************************************************************** @@ -1150,7 +1150,7 @@ static HRESULT paste_pidls(ContextMenu *This, ITEMIDLIST **pidls, UINT count) if(psfhlpsrc) ISFHelper_Release(psfhlpsrc); IShellFolder_Release(psfFrom); } - SHFree(pidl_dir); + ILFree(pidl_dir); }
IShellFolder_Release(psfDesktop);
From: Alex Henrie alexhenrie24@gmail.com
--- include/shlobj.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/shlobj.h b/include/shlobj.h index c00687e84d8..0774dae7eca 100644 --- a/include/shlobj.h +++ b/include/shlobj.h @@ -74,8 +74,9 @@ enum
typedef int GPFIDL_FLAGS;
+WINSHELLAPI void WINAPI SHFree(void*); WINSHELLAPI UINT WINAPI SHAddFromPropSheetExtArray(HPSXA,LPFNADDPROPSHEETPAGE,LPARAM); -WINSHELLAPI LPVOID WINAPI SHAlloc(ULONG) __WINE_ALLOC_SIZE(1); +WINSHELLAPI void* WINAPI SHAlloc(ULONG) __WINE_ALLOC_SIZE(1) __WINE_DEALLOC(SHFree) __WINE_MALLOC; WINSHELLAPI HRESULT WINAPI SHCoCreateInstance(LPCWSTR,const CLSID*,IUnknown*,REFIID,LPVOID*); WINSHELLAPI HPSXA WINAPI SHCreatePropSheetExtArray(HKEY,LPCWSTR,UINT); WINSHELLAPI HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY,LPCWSTR,UINT,IDataObject*); @@ -88,7 +89,6 @@ WINSHELLAPI HRESULT WINAPI SHCreateStdEnumFmtEtc(DWORD,const FORMATETC *,IE WINSHELLAPI void WINAPI SHDestroyPropSheetExtArray(HPSXA); WINSHELLAPI BOOL WINAPI SHFindFiles(LPCITEMIDLIST,LPCITEMIDLIST); WINSHELLAPI DWORD WINAPI SHFormatDrive(HWND,UINT,UINT,UINT); -WINSHELLAPI void WINAPI SHFree(LPVOID); WINSHELLAPI BOOL WINAPI GetFileNameFromBrowse(HWND,LPWSTR,DWORD,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); WINSHELLAPI HRESULT WINAPI SHGetInstanceExplorer(IUnknown**); WINSHELLAPI HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);