feat(lsp): rename_symbol: add checks to file uri decoding
This commit is contained in:
parent
00efee6c02
commit
f659fcf586
1 changed files with 7 additions and 0 deletions
|
@ -815,8 +815,15 @@ pub fn rename_symbol(self: *Self, from: tp.pid_ref, file_path: []const u8, row:
|
||||||
try cbor.writeValue(w, "rename_symbol_item");
|
try cbor.writeValue(w, "rename_symbol_item");
|
||||||
try cbor.writeArrayHeader(w, renames.items.len);
|
try cbor.writeArrayHeader(w, renames.items.len);
|
||||||
for (renames.items) |rename| {
|
for (renames.items) |rename| {
|
||||||
|
if (!std.mem.eql(u8, rename.uri[0..7], "file://")) return error.InvalidTargetURI;
|
||||||
var file_path_buf: [std.fs.max_path_bytes]u8 = undefined;
|
var file_path_buf: [std.fs.max_path_bytes]u8 = undefined;
|
||||||
const file_path_ = std.Uri.percentDecodeBackwards(&file_path_buf, rename.uri[7..]);
|
const file_path_ = std.Uri.percentDecodeBackwards(&file_path_buf, rename.uri[7..]);
|
||||||
|
if (builtin.os.tag == .windows) {
|
||||||
|
if (file_path[0] == '/') file_path = file_path[1..];
|
||||||
|
for (file_path, 0..) |c, i| if (c == '/') {
|
||||||
|
file_path[i] = '\\';
|
||||||
|
};
|
||||||
|
}
|
||||||
const line = try self.get_line_of_file(self.allocator, file_path, rename.range.start.line);
|
const line = try self.get_line_of_file(self.allocator, file_path, rename.range.start.line);
|
||||||
try cbor.writeValue(w, .{
|
try cbor.writeValue(w, .{
|
||||||
file_path_,
|
file_path_,
|
||||||
|
|
Loading…
Add table
Reference in a new issue