Zhiyi Zhang : explorer: Fix memory leaks.
Alexandre Julliard
julliard at winehq.org
Thu Jul 14 16:59:25 CDT 2022
Module: wine
Branch: master
Commit: 9a98ad709f3f0634f322b8163f92a303d9625e79
URL: https://gitlab.winehq.org/wine/wine/-/commit/9a98ad709f3f0634f322b8163f92a303d9625e79
Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date: Mon Jul 4 11:36:55 2022 +0800
explorer: Fix memory leaks.
Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
---
programs/explorer/explorer.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/programs/explorer/explorer.c b/programs/explorer/explorer.c
index c2f5e74afae..26928912649 100644
--- a/programs/explorer/explorer.c
+++ b/programs/explorer/explorer.c
@@ -414,20 +414,23 @@ static void make_explorer_window(parameters_struct *params)
{
ERR("Failed to create PIDL for %s.\n", debugstr_w(path));
IShellWindows_Release(sw);
+ free(path);
return;
}
variant_from_pidl(&var, pidl);
V_VT(&empty_var) = VT_EMPTY;
- if (IShellWindows_FindWindowSW(sw, &var, &empty_var, SWC_EXPLORER, &hwnd, 0, &dispatch) == S_OK)
+ hres = IShellWindows_FindWindowSW(sw, &var, &empty_var, SWC_EXPLORER, &hwnd, 0, &dispatch);
+ VariantClear(&var);
+ ILFree(pidl);
+ if (hres == S_OK)
{
TRACE("Found window %#lx already browsing path %s.\n", hwnd, debugstr_w(path));
SetForegroundWindow((HWND)(LONG_PTR)hwnd);
IShellWindows_Release(sw);
+ free(path);
return;
}
- ILFree(pidl);
- VariantClear(&var);
}
memset(nav_buttons,0,sizeof(nav_buttons));
@@ -448,6 +451,8 @@ static void make_explorer_window(parameters_struct *params)
if(!info)
{
WINE_ERR("Could not allocate an explorer_info struct\n");
+ IShellWindows_Release(sw);
+ free(path);
return;
}
hres = CoCreateInstance(&CLSID_ExplorerBrowser,NULL,CLSCTX_INPROC_SERVER,
@@ -456,6 +461,8 @@ static void make_explorer_window(parameters_struct *params)
{
WINE_ERR("Could not obtain an instance of IExplorerBrowser\n");
HeapFree(GetProcessHeap(),0,info);
+ IShellWindows_Release(sw);
+ free(path);
return;
}
info->rebar_height=0;
@@ -537,6 +544,7 @@ static void make_explorer_window(parameters_struct *params)
folder = get_starting_shell_folder(path);
IExplorerBrowser_BrowseToObject(info->browser, (IUnknown *)folder, SBSP_ABSOLUTE);
IShellFolder_Release(folder);
+ free(path);
ShowWindow(info->main_window,SW_SHOWDEFAULT);
UpdateWindow(info->main_window);
More information about the wine-cvs
mailing list