summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar lat9nq2023-06-20 15:49:47 -0400
committerGravatar lat9nq2023-06-20 15:54:05 -0400
commitfd5d7947f614d837cb3b08e132a025c4e1536d37 (patch)
tree682ddeaf8d3097e35aa7ff0ec70345df5577d185 /src
parentMerge pull request #10853 from lat9nq/update_tzdb_to_nx (diff)
downloadyuzu-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.cpp4
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;