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.
This commit is contained in:
lat9nq 2023-06-20 15:49:47 -04:00
parent a67bdeb2c2
commit fd5d7947f6
1 changed files with 3 additions and 1 deletions

View File

@ -911,7 +911,9 @@ static Result ToCalendarTimeInternal(const TimeZoneRule& rules, s64 time,
calendar_additional_info.is_dst = rules.ttis[tti_index].is_dst;
const char* time_zone{&rules.chars[rules.ttis[tti_index].abbreviation_list_index]};
for (int index{}; time_zone[index] != '\0'; ++index) {
for (u32 index{}; time_zone[index] != '\0' && time_zone[index] != ',' &&
index < calendar_additional_info.timezone_name.size() - 1;
++index) {
calendar_additional_info.timezone_name[index] = time_zone[index];
}
return ResultSuccess;