From 2e379336b9d08fd9b44d9e24d4fb30548b8d5bf2 Mon Sep 17 00:00:00 2001 From: Auguste Rame Date: Thu, 14 Jul 2022 12:43:10 +0200 Subject: [PATCH] (Hopefully) fix configuration uri/memory bugs Closes #533 --- src/main.zig | 5 ++--- src/types.zig | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main.zig b/src/main.zig index 98a5763..92b0ebc 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1787,7 +1787,6 @@ fn requestConfiguration(arena: *std.heap.ArenaAllocator) !void { var comp_confi: [std.meta.fields(Config).len]types.ConfigurationParams.ConfigurationItem = undefined; inline for (std.meta.fields(Config)) |field, index| { comp_confi[index] = .{ - .scopeUri = "zls", .section = "zls." ++ field.name, }; } @@ -2189,7 +2188,7 @@ fn didChangeConfigurationHandler(arena: *std.heap.ArenaAllocator, id: types.Requ inline for (std.meta.fields(Config)) |field| { if (@field(req.params.settings, field.name)) |value| { logger.debug("setting configuration option '{s}' to '{any}'", .{ field.name, value }); - @field(config, field.name) = value; + @field(config, field.name) = if (@TypeOf(value) == []const u8) try gpa_state.allocator().dupe(u8, value) else value; } } } else if (client_capabilities.supports_configuration) @@ -2262,7 +2261,7 @@ fn processJsonRpc(arena: *std.heap.ArenaAllocator, parser: *std.json.Parser, jso if (value != .Null) { const new_value: field.field_type = switch (ft) { []const u8 => switch (value) { - .String => |s| s, + .String => |s| try gpa_state.allocator().dupe(u8, s), // TODO: Allocation model? (same with didChangeConfiguration); imo this isn't *that* bad but still else => @panic("Invalid configuration value"), // TODO: Handle this }, else => switch (ti) { diff --git a/src/types.zig b/src/types.zig index f8ba92e..c426267 100644 --- a/src/types.zig +++ b/src/types.zig @@ -398,7 +398,6 @@ pub const ConfigurationParams = struct { items: []const ConfigurationItem, pub const ConfigurationItem = struct { - scopeUri: ?[]const u8, section: ?[]const u8, }; };