mirror of
https://github.com/odin-lang/Odin.git
synced 2026-01-06 13:07:59 +00:00
fix parsing issue around utc/localtime split
This commit is contained in:
@@ -536,24 +536,21 @@ parse_tzif :: proc(_buffer: []u8, region_name: string, allocator := context.allo
|
||||
buffer = buffer[(int(real_hdr.leapcnt) * size_of(Leapsecond_Record)):]
|
||||
|
||||
standard_wall_tags := buffer[:int(real_hdr.isstdcnt)]
|
||||
buffer = buffer[int(real_hdr.isstdcnt):]
|
||||
|
||||
ut_tags := buffer[:int(real_hdr.isutcnt)]
|
||||
|
||||
for stdwall_tag, idx in standard_wall_tags {
|
||||
ut_tag := ut_tags[idx]
|
||||
|
||||
if (stdwall_tag != 0 && stdwall_tag != 1) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
buffer = buffer[int(real_hdr.isstdcnt):]
|
||||
|
||||
ut_tags := buffer[:int(real_hdr.isutcnt)]
|
||||
for ut_tag, idx in ut_tags {
|
||||
if (ut_tag != 0 && ut_tag != 1) {
|
||||
return
|
||||
}
|
||||
|
||||
if ut_tag == 1 && stdwall_tag != 1 {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
buffer = buffer[int(real_hdr.isutcnt):]
|
||||
|
||||
// Start of footer
|
||||
|
||||
@@ -574,4 +574,14 @@ test_check_timezone_edgecases :: proc(t: ^testing.T) {
|
||||
expected_tok_dt, _ := dt.components_to_datetime(2024, 10, 4, 9, 47, 0)
|
||||
|
||||
testing.expectf(t, datetime_eq(ret_dt, expected_tok_dt), "Failed to convert to Tokyo time")
|
||||
|
||||
|
||||
tog_tz, tog_load_ok := tz.region_load("Pacific/Tongatapu")
|
||||
testing.expectf(t, tog_load_ok, "Failed to load Pacific/Tongatapu timezone")
|
||||
defer tz.region_destroy(tog_tz)
|
||||
|
||||
ret_dt = tz.datetime_to_tz(utc_dt, tog_tz)
|
||||
expected_tog_dt, _ := dt.components_to_datetime(2024, 10, 4, 9, 47, 0)
|
||||
|
||||
testing.expectf(t, datetime_eq(ret_dt, expected_tog_dt), "Failed to convert to Togatapu time")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user