From 4bd071c4aac6f607786424bf9d07e7764708a0f7 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sun, 12 Jul 2026 03:45:15 -0700 Subject: [PATCH] parseAt: time_part is in unix so setting z_offset needs to offset init int --- git.zig | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/git.zig b/git.zig index a55387e91801d559def641b3bb5019346a608393..dbb2adfc1a9ee23f584f69e8b889dbe2c9b4d39b 100644 --- a/git.zig +++ b/git.zig @@ -207,16 +207,20 @@ fn parseCommitUserAndAt(input: string) !UserAndAt { } fn parseAt(time_part: string, tz_part: string) time.DateTime { - var at = time.DateTime.initUnix(extras.parseDigits(u64, time_part, 10) catch unreachable); + var at_s = extras.parseDigits(u64, time_part, 10) catch unreachable; std.debug.assert(tz_part.len == 5); std.debug.assert(tz_part[0] == '-' or tz_part[0] == '+'); const sign: i8 = if (tz_part[0] == '+') 1 else -1; const hrs = extras.parseDigits(u7, tz_part[1..][0..2], 10) catch unreachable; const mins = extras.parseDigits(u7, tz_part[3..][0..2], 10) catch unreachable; - at.z_offset += hrs; - at.z_offset *= 4; - at.z_offset += mins / 15; - at.z_offset *= sign; + var z_offset: i8 = 0; + z_offset += hrs; + z_offset *= 4; + z_offset += mins / 15; + z_offset *= sign; + at_s = extras.safeAdd(at_s, @as(i32, z_offset) * 15 * time.s_per_min); + var at: time.DateTime = .initUnix(at_s); + at.z_offset = z_offset; return at; } -- 2.54.0