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:
parent
a67bdeb2c2
commit
fd5d7947f6
1 changed files with 3 additions and 1 deletions
|
@ -911,7 +911,9 @@ static Result ToCalendarTimeInternal(const TimeZoneRule& rules, s64 time,
|
||||||
|
|
||||||
calendar_additional_info.is_dst = rules.ttis[tti_index].is_dst;
|
calendar_additional_info.is_dst = rules.ttis[tti_index].is_dst;
|
||||||
const char* time_zone{&rules.chars[rules.ttis[tti_index].abbreviation_list_index]};
|
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];
|
calendar_additional_info.timezone_name[index] = time_zone[index];
|
||||||
}
|
}
|
||||||
return ResultSuccess;
|
return ResultSuccess;
|
||||||
|
|
Loading…
Reference in a new issue