diff options
author | Vladimir Belyavsky <belyavskyv@gmail.com> | 2022-11-18 16:56:03 +0300 |
---|---|---|
committer | Vladimir Belyavsky <belyavskyv@gmail.com> | 2022-11-27 11:12:19 +0300 |
commit | 7d7ed24f517aff2f4bf9f2e32a29603476af6c88 (patch) | |
tree | 7b05e27eb5c342c7bfbcb01b4a1f5197664e22e4 /src | |
parent | b93720472ea5b14717bfe41304c3aab63faedef3 (diff) |
QSystemLocale[Win]: Catch potential WinRT exceptions
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 <marten.nordheim@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/text/qlocale_win.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
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) |