Fixed early file.deinit causing memory leaks

This commit is contained in:
Caleb Gardner
2025-05-19 06:08:43 -05:00
parent 1b0a0221c4
commit 1150b0d427
+5 -4
View File
@@ -42,9 +42,7 @@ pub const File = struct {
if (clean_path.len == 0) { if (clean_path.len == 0) {
return self.*; return self.*;
} }
if (!first) { defer if (!first) self.deinit(reader.alloc);
defer self.deinit(reader.alloc);
}
switch (self.inode.header.inode_type) { switch (self.inode.header.inode_type) {
.dir, .ext_dir => {}, .dir, .ext_dir => {},
else => return FileError.NotDirectory, else => return FileError.NotDirectory,
@@ -109,8 +107,11 @@ fn fileFromDirEntry(read: *Reader, ent: DirEntry) !File {
); );
defer meta_rdr.deinit(); defer meta_rdr.deinit();
try meta_rdr.skip(ent.offset); try meta_rdr.skip(ent.offset);
// Copy name so we can clean-up the DirEntrys without causing issues.
const name = try read.alloc.alloc(u8, ent.name.len);
std.mem.copyForwards(u8, name, ent.name);
return .{ return .{
.name = ent.name, .name = name,
.inode = try .init( .inode = try .init(
read.alloc, read.alloc,
meta_rdr.any(), meta_rdr.any(),