Move build options out of parse result instead of copying
This commit is contained in:
parent
5fd2e87c5b
commit
399fa7fd09
@ -118,7 +118,7 @@ fn loadBuildAssociatedConfiguration(allocator: std.mem.Allocator, build_file: *B
|
|||||||
const directory_path = build_file_path[0 .. build_file_path.len - "build.zig".len];
|
const directory_path = build_file_path[0 .. build_file_path.len - "build.zig".len];
|
||||||
|
|
||||||
const options = std.json.ParseOptions{ .allocator = allocator };
|
const options = std.json.ParseOptions{ .allocator = allocator };
|
||||||
const build_associated_config = blk: {
|
var build_associated_config = blk: {
|
||||||
const config_file_path = try std.fs.path.join(allocator, &[_][]const u8{ directory_path, "zls.build.json" });
|
const config_file_path = try std.fs.path.join(allocator, &[_][]const u8{ directory_path, "zls.build.json" });
|
||||||
defer allocator.free(config_file_path);
|
defer allocator.free(config_file_path);
|
||||||
|
|
||||||
@ -144,18 +144,8 @@ fn loadBuildAssociatedConfiguration(allocator: std.mem.Allocator, build_file: *B
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (build_associated_config.build_options) |opts| {
|
if (build_associated_config.build_options) |opts| {
|
||||||
// Copy options out of json parse result since they will be invalidated
|
build_file.build_options = opts;
|
||||||
var build_opts = try std.ArrayListUnmanaged(BuildAssociatedConfig.BuildOption).initCapacity(allocator, opts.len);
|
build_associated_config.build_options = null;
|
||||||
errdefer {
|
|
||||||
for (build_opts.items) |*opt| {
|
|
||||||
opt.deinit(allocator);
|
|
||||||
}
|
|
||||||
build_opts.deinit(allocator);
|
|
||||||
}
|
|
||||||
for (opts) |opt| {
|
|
||||||
try build_opts.append(allocator, try opt.dupe(allocator));
|
|
||||||
}
|
|
||||||
build_file.build_options = build_opts.toOwnedSlice(allocator);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user