Skip to content

Commit d125e22

Browse files
committed
Fix memory leak in unmanaged
1 parent 46d24b5 commit d125e22

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/segment_merger.zig

+9-5
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ pub const MergedSegmentInfo = struct {
99
info: SegmentInfo = .{},
1010
attributes: std.AutoHashMapUnmanaged(u64, u64) = .{},
1111
docs: std.AutoHashMapUnmanaged(u32, bool) = .{},
12+
13+
pub fn deinit(self: *MergedSegmentInfo, allocator: std.mem.Allocator) void {
14+
self.attributes.deinit(allocator);
15+
self.docs.deinit(allocator);
16+
}
1217
};
1318

1419
pub fn SegmentMerger(comptime Segment: type) type {
@@ -36,8 +41,8 @@ pub fn SegmentMerger(comptime Segment: type) type {
3641
};
3742

3843
allocator: std.mem.Allocator,
39-
sources: std.ArrayList(Source),
4044
collection: *SegmentList(Segment),
45+
sources: std.ArrayListUnmanaged(Source) = .{},
4146
segment: MergedSegmentInfo = .{},
4247
estimated_size: usize = 0,
4348

@@ -46,7 +51,6 @@ pub fn SegmentMerger(comptime Segment: type) type {
4651
pub fn init(allocator: std.mem.Allocator, collection: *SegmentList(Segment)) Self {
4752
return .{
4853
.allocator = allocator,
49-
.sources = std.ArrayList(Source).init(allocator),
5054
.collection = collection,
5155
};
5256
}
@@ -56,13 +60,13 @@ pub fn SegmentMerger(comptime Segment: type) type {
5660
source.reader.close();
5761
source.skip_docs.deinit(self.allocator);
5862
}
59-
self.sources.deinit();
60-
self.segment.docs.deinit(self.allocator);
63+
self.sources.deinit(self.allocator);
64+
self.segment.deinit(self.allocator);
6165
self.* = undefined;
6266
}
6367

6468
pub fn addSource(self: *Self, source: *Segment) !void {
65-
try self.sources.append(.{
69+
try self.sources.append(self.allocator, .{
6670
.reader = source.reader(),
6771
});
6872
}

0 commit comments

Comments
 (0)