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

Reply via email to