fixed jrpc config treating empty strings as non null (#727)
This commit is contained in:
parent
7a7576c06d
commit
2ae113ddcf
@ -2120,10 +2120,17 @@ fn didChangeConfigurationHandler(server: *Server, writer: anytype, id: types.Req
|
||||
if (req.settings) |configuration| {
|
||||
inline for (std.meta.fields(Config.Configuration)) |field| {
|
||||
if (@field(configuration, field.name)) |value| {
|
||||
blk: {
|
||||
if (@TypeOf(value) == []const u8) {
|
||||
if (value.len == 0) {
|
||||
break :blk;
|
||||
}
|
||||
}
|
||||
@field(server.config, field.name) = if (@TypeOf(value) == []const u8) try server.allocator.dupe(u8, value) else value;
|
||||
log.debug("setting configuration option '{s}' to '{any}'", .{ field.name, value });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try server.config.configChanged(server.allocator, null);
|
||||
} else if (server.client_capabilities.supports_configuration) {
|
||||
@ -2653,6 +2660,14 @@ pub fn processJsonRpc(server: *Server, writer: anytype, json: []const u8) !void
|
||||
const new_value: field.field_type = switch (ft) {
|
||||
[]const u8 => switch (value) {
|
||||
.String => |s| blk: {
|
||||
if (s.len == 0) {
|
||||
if (field.field_type == ?[]const u8) {
|
||||
break :blk null;
|
||||
}
|
||||
else {
|
||||
break :blk s;
|
||||
}
|
||||
}
|
||||
var nv = try server.allocator.dupe(u8, s);
|
||||
if (@field(server.config, field.name)) |prev_val| server.allocator.free(prev_val);
|
||||
break :blk nv;
|
||||
|
Loading…
Reference in New Issue
Block a user