Module: wine Branch: master Commit: aabb4e12bc3d3a8f0b5b8d301867cb4d7e039729 URL: https://gitlab.winehq.org/wine/wine/-/commit/aabb4e12bc3d3a8f0b5b8d301867cb4...
Author: Eric Pouech eric.pouech@gmail.com Date: Wed Mar 8 11:43:22 2023 +0100
dbghelp: Use 'wine' as loader on multi-arch configuration.
Signed-off-by: Eric Pouech eric.pouech@gmail.com
---
dlls/dbghelp/module.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c index ad8ec22fe32..8c7639dba38 100644 --- a/dlls/dbghelp/module.c +++ b/dlls/dbghelp/module.c @@ -134,7 +134,7 @@ WCHAR *get_wine_loader_name(struct process *pcs) unsigned len;
name = process_getenv(pcs, L"WINELOADER"); - if (!name) name = pcs->is_64bit ? L"wine64" : L"wine"; + if (!name) name = pcs->is_system_64bit ? L"wine64" : L"wine"; len = lstrlenW(name);
/* WINELOADER isn't properly updated in Wow64 process calling inside Windows env block @@ -145,9 +145,14 @@ WCHAR *get_wine_loader_name(struct process *pcs) if (altname) { memcpy(altname, name, len * sizeof(WCHAR)); - if (pcs->is_64bit && len >= 2 && memcmp(name + len - 2, L"64", 2 * sizeof(WCHAR)) != 0) + if (pcs->is_system_64bit && len >= 2 && memcmp(name + len - 2, L"64", 2 * sizeof(WCHAR)) != 0) + { lstrcpyW(altname + len, L"64"); - else if (!pcs->is_64bit && len >= 2 && !memcmp(name + len - 2, L"64", 2 * sizeof(WCHAR))) + /* in multi-arch wow configuration, wine64 doesn't exist */ + if (GetFileAttributesW(altname) == INVALID_FILE_ATTRIBUTES) + altname[len] = L'\0'; + } + else if (!pcs->is_system_64bit && len >= 2 && !memcmp(name + len - 2, L"64", 2 * sizeof(WCHAR))) altname[len - 2] = '\0'; else altname[len] = '\0';