X-Git-Url: https://gitweb.ps.run/ziggit/blobdiff_plain/082dd5cd1782d1a384217bcfe309910c4df459b0..HEAD:/git.zig diff --git a/git.zig b/git.zig index 27081a2..07be390 100644 --- a/git.zig +++ b/git.zig @@ -322,11 +322,9 @@ const PackFile = struct { try self.pckFile.seekBy(-offset); const baseObject = try self.readObject(pckReader); - defer self.alloc.free(baseObject.data); try self.pckFile.seekTo(pos); const deltaData = try decompress(self.alloc, pckReader); - defer self.alloc.free(deltaData); const objectData = try applyDelta(self.alloc, baseObject.data, deltaData); return Object.init(baseObject.kind, objectData); @@ -390,7 +388,6 @@ const Repo = struct { pub fn getHead(self: *Repo) !Id { // read file HEAD const head = try self.dir.readFileAlloc(self.alloc, "HEAD", 1024); - defer self.alloc.free(head); // read file pointed at by HEAD const headPath = head[5 .. head.len - 1]; @@ -410,7 +407,10 @@ const Repo = struct { }; test "print HEAD" { - const alloc = std.testing.allocator; + var arena = std.heap.ArenaAllocator.init(std.testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + var repo = try Repo.open(alloc, "../imgui/.git"); defer repo.close(); @@ -420,7 +420,10 @@ test "print HEAD" { } test "parse idx" { - const alloc = std.testing.allocator; + var arena = std.heap.ArenaAllocator.init(std.testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + var repo = try Repo.open(alloc, "../imgui/.git"); defer repo.close(); @@ -431,29 +434,31 @@ test "parse idx" { } test "get object" { - const alloc = std.testing.allocator; + var arena = std.heap.ArenaAllocator.init(std.testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + var repo = try Repo.open(alloc, "../imgui/.git"); defer repo.close(); const head = try repo.getHead(); if (try repo.getObject(head)) |o| { - defer alloc.free(o.data); - std.debug.print("object({}): {s}\n", .{ o.kind, o.data }); } } test "parse commit" { - const alloc = std.testing.allocator; + var arena = std.heap.ArenaAllocator.init(std.testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + var repo = try Repo.open(alloc, "../imgui/.git"); defer repo.close(); const head = try repo.getHead(); if (try repo.getObject(head)) |o| { - defer alloc.free(o.data); - switch (try o.parse(alloc)) { .c => |c| { std.debug.print("commit:\n tree: {x}\n parent: {x}\n author: {s}\n committer: {s}\n message: {s}\n", .{ c.tree, c.parent, c.author, c.committer, c.message }); @@ -464,25 +469,27 @@ test "parse commit" { } test "get tree" { - const alloc = std.testing.allocator; + var arena = std.heap.ArenaAllocator.init(std.testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + var repo = try Repo.open(alloc, "../imgui/.git"); defer repo.close(); if (try repo.getObject(0xceb2b2c62d6f8f3686dcacecd5be931839b02c77)) |o| { - defer alloc.free(o.data); - - // std.debug.print("tree({}): {any}\n", .{ o.kind, o.data }); + std.debug.print("tree({}): {any}\n", .{ o.kind, o.data }); } } test "parse tree" { - const alloc = std.testing.allocator; + var arena = std.heap.ArenaAllocator.init(std.testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + var repo = try Repo.open(alloc, "../imgui/.git"); defer repo.close(); if (try repo.getObject(0xceb2b2c62d6f8f3686dcacecd5be931839b02c77)) |o| { - defer alloc.free(o.data); - switch (try o.parse(alloc)) { .t => |t| { defer t.deinit(); @@ -496,7 +503,10 @@ test "parse tree" { } test "list commits" { - const alloc = std.testing.allocator; + var arena = std.heap.ArenaAllocator.init(std.testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + var repo = try Repo.open(alloc, "../imgui/.git"); defer repo.close(); @@ -506,8 +516,6 @@ test "list commits" { for (0..3) |_| { if (try repo.getObject(id)) |o| { - defer alloc.free(o.data); - switch (try o.parse(alloc)) { .c => |c| { std.debug.print("commit {x}:\n tree: {x}\n parent: {x}\n author: {s}\n committer: {s}\n message: {s}\n", .{ id, c.tree, c.parent, c.author, c.committer, c.message }); @@ -520,20 +528,19 @@ test "list commits" { } test "list blobs" { - const alloc = std.testing.allocator; + var arena = std.heap.ArenaAllocator.init(std.testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + var repo = try Repo.open(alloc, "../imgui/.git"); defer repo.close(); if (try repo.getObject(0xceb2b2c62d6f8f3686dcacecd5be931839b02c77)) |o| { - defer alloc.free(o.data); - switch (try o.parse(alloc)) { .t => |t| { defer t.deinit(); for (t.items) |treeEntry| { if (try repo.getObject(treeEntry.id)) |bo| { - defer alloc.free(bo.data); - if (treeEntry.permissions.len == 6) { std.debug.print("{s}: [{x} {}]{s}\n", .{ treeEntry.name, treeEntry.id, bo.data.len, bo.data[0..50] }); } else { @@ -548,7 +555,10 @@ test "list blobs" { } test "basic frontend" { - const alloc = std.testing.allocator; + var arena = std.heap.ArenaAllocator.init(std.testing.allocator); + defer arena.deinit(); + const alloc = arena.allocator(); + var repo = try Repo.open(alloc, "../imgui/.git"); defer repo.close(); @@ -558,8 +568,6 @@ test "basic frontend" { for (0..3) |_| { if (try repo.getObject(id)) |o| { - defer alloc.free(o.data); - switch (try o.parse(alloc)) { .c => |c| { std.debug.print("commit {x}:\n tree: {x}\n parent: {x}\n author: {s}\n committer: {s}\n message: {s}\n", .{ id, c.tree, c.parent, c.author, c.committer, c.message });