diff options
| author | 2023-06-20 15:49:47 -0400 | |
|---|---|---|
| committer | 2023-06-20 15:54:05 -0400 | |
| commit | fd5d7947f614d837cb3b08e132a025c4e1536d37 (patch) | |
| tree | 682ddeaf8d3097e35aa7ff0ec70345df5577d185 /src | |
| parent | Merge pull request #10853 from lat9nq/update_tzdb_to_nx (diff) | |
| download | yuzu-fd5d7947f614d837cb3b08e132a025c4e1536d37.tar.gz yuzu-fd5d7947f614d837cb3b08e132a025c4e1536d37.tar.xz yuzu-fd5d7947f614d837cb3b08e132a025c4e1536d37.zip | |
time_zone_manager: Stop on comma
This is a deviation from the reference time zone implementation. The
actual code will set a pointer to the time zone name here, but for us we
have a limited number of characters to work with, and the name of the
time zone here could be larger than 8 characters.
We can make the assumption that time zone names greater than five
characters in length include a comma that denotes more data. Nintendo
just truncates that data for the name, so we can do the same.
time_zone_manager: Check for length of array
Just to be double sure that we never break past the array length,
directly compare against it.
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/time/time_zone_manager.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/core/hle/service/time/time_zone_manager.cpp b/src/core/hle/service/time/time_zone_manager.cpp index 63aacd19f..43d0a19b8 100644 --- a/src/core/hle/service/time/time_zone_manager.cpp +++ b/src/core/hle/service/time/time_zone_manager.cpp | |||
| @@ -911,7 +911,9 @@ static Result ToCalendarTimeInternal(const TimeZoneRule& rules, s64 time, | |||
| 911 | 911 | ||
| 912 | calendar_additional_info.is_dst = rules.ttis[tti_index].is_dst; | 912 | calendar_additional_info.is_dst = rules.ttis[tti_index].is_dst; |
| 913 | const char* time_zone{&rules.chars[rules.ttis[tti_index].abbreviation_list_index]}; | 913 | const char* time_zone{&rules.chars[rules.ttis[tti_index].abbreviation_list_index]}; |
| 914 | for (int index{}; time_zone[index] != '\0'; ++index) { | 914 | for (u32 index{}; time_zone[index] != '\0' && time_zone[index] != ',' && |
| 915 | index < calendar_additional_info.timezone_name.size() - 1; | ||
| 916 | ++index) { | ||
| 915 | calendar_additional_info.timezone_name[index] = time_zone[index]; | 917 | calendar_additional_info.timezone_name[index] = time_zone[index]; |
| 916 | } | 918 | } |
| 917 | return ResultSuccess; | 919 | return ResultSuccess; |