From 7d7ed24f517aff2f4bf9f2e32a29603476af6c88 Mon Sep 17 00:00:00 2001 From: Vladimir Belyavsky Date: Fri, 18 Nov 2022 16:56:03 +0300 Subject: QSystemLocale[Win]: Catch potential WinRT exceptions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some Windows SDKs seem to throw an exception from winrt::check_hresult() We need to handle this accordingly. Fixes: QTBUG-108605 Pick-to: 6.2 6.4 Change-Id: I14ad3b6dbd9b5fdf0120f9d3336a4d922167d169 Reviewed-by: MÃ¥rten Nordheim --- src/corelib/text/qlocale_win.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/corelib/text/qlocale_win.cpp b/src/corelib/text/qlocale_win.cpp index 9625f7bf7b..67fac95304 100644 --- a/src/corelib/text/qlocale_win.cpp +++ b/src/corelib/text/qlocale_win.cpp @@ -665,9 +665,13 @@ QVariant QSystemLocalePrivate::uiLanguages() #if QT_CONFIG(cpp_winrt) using namespace winrt; using namespace Windows::System::UserProfile; - auto languages = GlobalizationPreferences::Languages(); - for (const auto &lang : languages) - result << QString::fromStdString(winrt::to_string(lang)); + QT_TRY { + auto languages = GlobalizationPreferences::Languages(); + for (const auto &lang : languages) + result << QString::fromStdString(winrt::to_string(lang)); + } QT_CATCH(...) { + // pass, just fall back to WIN32 API implementation + } if (!result.isEmpty()) return result; // else just fall back to WIN32 API implementation #endif // QT_CONFIG(cpp_winrt) -- cgit v1.2.3