-- v2: winepath: Free wine_get_(dos|unix)_file_name memory with HeapFree. mshtml: Free wine_get_dos_file_name memory with HeapFree. appwiz.cpl: Free wine_get_dos_file_name memory with HeapFree.
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/appwiz.cpl/addons.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/appwiz.cpl/addons.c b/dlls/appwiz.cpl/addons.c index f7e36b8b99b..026fda304a1 100644 --- a/dlls/appwiz.cpl/addons.c +++ b/dlls/appwiz.cpl/addons.c @@ -233,7 +233,7 @@ static enum install_res install_from_unix_file(const char *dir, const WCHAR *sub if (p_wine_get_dos_file_name && (dos_dir = p_wine_get_dos_file_name( dir ))) { ret = install_from_dos_file( dos_dir, subdir, file_name ); - free( dos_dir ); + HeapFree( GetProcessHeap(), 0, dos_dir ); } return ret; } @@ -339,19 +339,19 @@ static WCHAR *get_cache_file_name(BOOL ensure_exists) if (ensure_exists && !CreateDirectoryW( cache_dir, NULL ) && GetLastError() != ERROR_ALREADY_EXISTS) { WARN( "%s does not exist and could not be created (%lu)\n", debugstr_w(cache_dir), GetLastError() ); - free( cache_dir ); + HeapFree( GetProcessHeap(), 0, cache_dir ); return NULL; }
size = lstrlenW( cache_dir ) + ARRAY_SIZE(L"\wine") + lstrlenW( addon->file_name ) + 1; if (!(ret = malloc( size * sizeof(WCHAR) ))) { - free( cache_dir ); + HeapFree( GetProcessHeap(), 0, cache_dir ); return NULL; } lstrcpyW( ret, cache_dir ); lstrcatW( ret, L"\wine" ); - free( cache_dir ); + HeapFree( GetProcessHeap(), 0, cache_dir );
if (ensure_exists && !CreateDirectoryW( ret, NULL ) && GetLastError() != ERROR_ALREADY_EXISTS) {
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/mshtml/nsembed.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index 66dd3f1d65e..8fb3b2a52ed 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -763,7 +763,7 @@ static WCHAR *find_wine_gecko_unix(const char *unix_path)
ret = check_version(dos_dir);
- free(dos_dir); + HeapFree(GetProcessHeap(), 0, dos_dir); return ret; }
From: Rémi Bernon rbernon@codeweavers.com
--- programs/winepath/winepath.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/programs/winepath/winepath.c b/programs/winepath/winepath.c index 88c64b91a42..9a322f40937 100644 --- a/programs/winepath/winepath.c +++ b/programs/winepath/winepath.c @@ -215,7 +215,7 @@ int __cdecl wmain(int argc, WCHAR *argv[]) { printf("%s%c", unix_name, separator); } - free( unix_name ); + HeapFree( GetProcessHeap(), 0, unix_name ); break; }
@@ -262,7 +262,7 @@ int __cdecl wmain(int argc, WCHAR *argv[]) { WideCharToMultiByte(CP_UNIXCP, 0, windows_name, -1, path, MAX_PATH, NULL, NULL); printf("%s%c", path, separator); - free( windows_name ); + HeapFree( GetProcessHeap(), 0, windows_name ); } else printf("%c", separator); free( unix_name );
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=126793
Your paranoid android.
=== debian11 (32 bit report) ===
uiautomationcore: uiautomation.c:9194: Test failed: Timed out waiting for the child process
v2: Added another invalid free with wine_get_unix_file_name.
Jacek Caban (@jacek) commented about dlls/appwiz.cpl/addons.c:
free( cache_dir );
HeapFree( GetProcessHeap(), 0, cache_dir ); return NULL;
}
size = lstrlenW( cache_dir ) + ARRAY_SIZE(L"\wine") + lstrlenW( addon->file_name ) + 1; if (!(ret = malloc( size * sizeof(WCHAR) ))) {
free( cache_dir );
} lstrcpyW( ret, cache_dir ); lstrcatW( ret, L"\wine" );HeapFree( GetProcessHeap(), 0, cache_dir ); return NULL;
- free( cache_dir );
- HeapFree( GetProcessHeap(), 0, cache_dir );
cache_dir currently uses `malloc()` when it's built from WINEHOMEDIR.
On Fri Nov 25 15:25:45 2022 +0000, Jacek Caban wrote:
cache_dir currently uses `malloc()` when it's built from WINEHOMEDIR.
Indeed, thanks.