Merge pull request #10930 from lat9nq/msvc-inconsistent-time-zones

settings: Catch runtime_error, fallback time zone
This commit is contained in:
liamwhite 2023-06-27 20:50:06 -04:00 committed by GitHub
commit 0b2798be27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 3 deletions

View File

@ -1,8 +1,11 @@
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include <version>
#if __cpp_lib_chrono >= 201907L #if __cpp_lib_chrono >= 201907L
#include <chrono> #include <chrono>
#include <exception>
#include <stdexcept>
#endif #endif
#include <string_view> #include <string_view>
@ -25,9 +28,19 @@ std::string GetTimeZoneString() {
if (time_zone_index == 0) { // Auto if (time_zone_index == 0) { // Auto
#if __cpp_lib_chrono >= 201907L #if __cpp_lib_chrono >= 201907L
const struct std::chrono::tzdb& time_zone_data = std::chrono::get_tzdb(); const struct std::chrono::tzdb& time_zone_data = std::chrono::get_tzdb();
const std::chrono::time_zone* current_zone = time_zone_data.current_zone(); try {
std::string_view current_zone_name = current_zone->name(); const std::chrono::time_zone* current_zone = time_zone_data.current_zone();
location_name = current_zone_name; std::string_view current_zone_name = current_zone->name();
location_name = current_zone_name;
} catch (std::runtime_error& runtime_error) {
// VCRUNTIME will throw a runtime_error if the operating system's selected time zone
// cannot be found
location_name = Common::TimeZone::FindSystemTimeZone();
LOG_WARNING(Common,
"Error occurred when trying to determine system time zone:\n{}\nFalling "
"back to hour offset \"{}\"",
runtime_error.what(), location_name);
}
#else #else
location_name = Common::TimeZone::FindSystemTimeZone(); location_name = Common::TimeZone::FindSystemTimeZone();
#endif #endif