https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116110
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #0) > // XXX The ri.until() time point should be > // "interpreted using the rules in effect just before the transition" > info.end = ri.until(); We should not assume that ri.until() is correct here, it might need adjusting... > // XXX UNTIL field should be interpreted > // "using the rules in effect just before the transition" > // so might need to store as year_month_day and hh_mm_ss and only > // convert to a sys_time once we know the offset in effect. > inf.m_until = sys_days(year(y)/m.m/day(d)) + seconds(t.time); For some cases we know here that the time is UTC, or is a fixed offset from UTC (because we're parsing a zone line that uses a fixed amount of time in the RULES column, or uses "-" in the RULES column). We can set inf.m_until correctly in those cases. But when RULES is the name of a Rule line, we need to record here that we need to make a later adjustment to info.m_until based on the rule in effect at that time. So we can just set a flag here saying "neds adjustment", and then use that in time_zone::_M_get_sys_info to set info.end = ri.until() + some_adjustment
