diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2023-06-27 20:50:06 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-27 20:50:06 -0400 |
commit | 0b2798be276941fb5ee9df346b5a566c29cea4ed (patch) | |
tree | 370eb6fd83bf86a050e2cbc9d28abc7ccf3cc8f9 /src | |
parent | bd4fefe5e72001679a01369e611eed058ff91ee1 (diff) | |
parent | 21675c9b68741d15b678598aa555536bfc6a6f76 (diff) |
Merge pull request #10930 from lat9nq/msvc-inconsistent-time-zones
settings: Catch runtime_error, fallback time zone
Diffstat (limited to 'src')
-rw-r--r-- | src/common/settings.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 66dffc9bf..6cbbea1b2 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -1,8 +1,11 @@ // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include <version> #if __cpp_lib_chrono >= 201907L #include <chrono> +#include <exception> +#include <stdexcept> #endif #include <string_view> @@ -25,9 +28,19 @@ std::string GetTimeZoneString() { if (time_zone_index == 0) { // Auto #if __cpp_lib_chrono >= 201907L const struct std::chrono::tzdb& time_zone_data = std::chrono::get_tzdb(); - const std::chrono::time_zone* current_zone = time_zone_data.current_zone(); - std::string_view current_zone_name = current_zone->name(); - location_name = current_zone_name; + try { + const std::chrono::time_zone* current_zone = time_zone_data.current_zone(); + 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 location_name = Common::TimeZone::FindSystemTimeZone(); #endif |