Module: wine Branch: master Commit: b233cfb33eab1895b6dfdb4fffb5c44fa36e05d2 URL: https://gitlab.winehq.org/wine/wine/-/commit/b233cfb33eab1895b6dfdb4fffb5c44...
Author: Billy Laws blaws05@gmail.com Date: Mon Jul 3 17:36:35 2023 +0100
wineboot: Always attempt setup for all machine types.
Without this, wineboot would bail out on ARM64 in the case where x86_64 WOW is not available but i386 is. Leaving an incomplete prefix without any clear error.
---
programs/wineboot/wineboot.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c index c05ce580298..76d9812a4bf 100644 --- a/programs/wineboot/wineboot.c +++ b/programs/wineboot/wineboot.c @@ -1498,20 +1498,23 @@ static void update_wineprefix( BOOL force ) HWND hwnd = show_wait_window(); for (;;) { - MSG msg; - DWORD res = MsgWaitForMultipleObjects( 1, &process, FALSE, INFINITE, QS_ALLINPUT ); - if (res == WAIT_OBJECT_0) + if (process) { + MSG msg; + DWORD res = MsgWaitForMultipleObjects( 1, &process, FALSE, INFINITE, QS_ALLINPUT ); + if (res != WAIT_OBJECT_0) + { + while (PeekMessageW( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageW( &msg ); + continue; + } CloseHandle( process ); - if (!machines[count]) break; - if (HIWORD(machines[count]) & 4 /* native machine */) - process = start_rundll32( inf_path, L"DefaultInstall", IMAGE_FILE_MACHINE_TARGET_HOST ); - else - process = start_rundll32( inf_path, L"Wow64Install", LOWORD(machines[count]) ); - count++; - if (!process) break; } - else while (PeekMessageW( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageW( &msg ); + if (!machines[count]) break; + if (HIWORD(machines[count]) & 4 /* native machine */) + process = start_rundll32( inf_path, L"DefaultInstall", IMAGE_FILE_MACHINE_TARGET_HOST ); + else + process = start_rundll32( inf_path, L"Wow64Install", LOWORD(machines[count]) ); + count++; } DestroyWindow( hwnd ); }