Free build files in document store deinit

This commit is contained in:
Alexandros Naskos 2020-05-25 19:49:04 +03:00
parent 4bf97bebc9
commit 02745f1472
2 changed files with 14 additions and 4 deletions

View File

@ -29,7 +29,6 @@ pub const Handle = struct {
} }
}; };
// @TODO Deinit the new stuff
allocator: *std.mem.Allocator, allocator: *std.mem.Allocator,
handles: std.StringHashMap(*Handle), handles: std.StringHashMap(*Handle),
has_zig: bool, has_zig: bool,
@ -157,12 +156,11 @@ fn newDocument(self: *DocumentStore, uri: []const u8, text: []u8) anyerror!*Hand
// TODO: Do this in a separate thread? // TODO: Do this in a separate thread?
// It can take quite long. // It can take quite long.
const context = LoadPackagesContext{ try loadPackages(.{
.build_file = build_file, .build_file = build_file,
.allocator = self.allocator, .allocator = self.allocator,
.build_runner_path = self.build_runner_path, .build_runner_path = self.build_runner_path,
}; });
try loadPackages(context);
} else if (self.has_zig and !in_std) associate_build_file: { } else if (self.has_zig and !in_std) associate_build_file: {
// Look into build files to see if we already have one that fits // Look into build files to see if we already have one that fits
for (self.build_files.items) |build_file| { for (self.build_files.items) |build_file| {
@ -587,4 +585,15 @@ pub fn deinit(self: *DocumentStore) void {
} }
self.handles.deinit(); self.handles.deinit();
for (self.build_files.items) |build_file| {
for (build_file.packages.items) |pkg| {
self.allocator.free(pkg.name);
self.allocator.free(pkg.uri);
}
self.allocator.free(build_file.uri);
self.allocator.destroy(build_file);
}
self.build_files.deinit(self.allocator);
} }

View File

@ -871,6 +871,7 @@ pub fn main() anyerror!void {
config_read: { config_read: {
const known_folders = @import("known-folders"); const known_folders = @import("known-folders");
const res = try known_folders.getPath(allocator, .local_configuration); const res = try known_folders.getPath(allocator, .local_configuration);
if (res) |local_config_path| { if (res) |local_config_path| {
defer allocator.free(local_config_path); defer allocator.free(local_config_path);