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 ); }