diff --git a/git.zig b/git.zig index dbd37411fe9d5dc137d0e305661adbefa4386260..31ff0f72f674bb32595363a5ab542a4e0f92ebf4 100644 --- a/git.zig +++ b/git.zig @@ -245,7 +245,12 @@ fn parseCommitUserAndAt(input: string) !UserAndAt { var maybe_bad_parser = std.mem.splitBackwardsScalar(u8, input, ' '); const tz_part = maybe_bad_parser.next() orelse return error.BadCommitTz; const time_part = maybe_bad_parser.next() orelse return error.BadCommitTime; - const email_part = maybe_bad_parser.next() orelse return error.BadCommitEmail; + var email_part = maybe_bad_parser.next() orelse return error.BadCommitEmail; + while (email_part[0] != '<') { + const next_len = maybe_bad_parser.next().?.len; + email_part.ptr -= next_len + 1; + email_part.len += next_len + 1; + } const name_part = maybe_bad_parser.rest(); std.debug.assert(email_part[0] == '<'); std.debug.assert(email_part[email_part.len - 1] == '>'); diff --git a/test.zig b/test.zig index ace270801cd0168cb12f52303a20ca442d11074a..db7ea5d3a7e8fd485beb6cab326b06ff404df142 100644 --- a/test.zig +++ b/test.zig @@ -238,6 +238,12 @@ test { const alloc = arena.allocator(); _ = try git.parseTreeDiff(alloc, @embedFile("./testdata/diff-d9165aacce3629d503f87cd2c3f612629127641b")); // zig } +test { + var arena = std.heap.ArenaAllocator.init(std.testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + _ = try git.parseCommit(alloc, @embedFile("./testdata/commit-afdc41cfd61db23f545d9239b61695e2ae991713")); // zig +} test { var arena = std.heap.ArenaAllocator.init(std.testing.allocator); defer arena.deinit(); diff --git a/testdata/commit-afdc41cfd61db23f545d9239b61695e2ae991713 b/testdata/commit-afdc41cfd61db23f545d9239b61695e2ae991713 new file mode 100644 index 0000000000000000000000000000000000000000..dd2c0cd5cddca3e1b6d5ec598c1bdc11b6fab2b6 --- /dev/null +++ b/testdata/commit-afdc41cfd61db23f545d9239b61695e2ae991713 @@ -0,0 +1,6 @@ +tree 75fb7a2a91977f415947e341c052db72ecb269a8 +parent b5cef9e8b48e81fb1f3b56cb752bac95e6a2d44b +author Michael Ortmann 1710995836 +0100 +committer Veikka Tuominen 1711033730 +0200 + +std.os.windows: add POLL.IN and POLL.OUT