diff options
| author | 2022-02-12 16:02:54 -0800 | |
|---|---|---|
| committer | 2022-02-12 16:02:54 -0800 | |
| commit | b9567eb193a90aebb3e271de56dd3edf1d2905c1 (patch) | |
| tree | 2123a6434e55d5511bb0d73c345c03871d62ea7f | |
| parent | 7139316ef5ce0e0f6632df5ac43fe15d81652133 (diff) | |
| download | bun-b9567eb193a90aebb3e271de56dd3edf1d2905c1.tar.gz bun-b9567eb193a90aebb3e271de56dd3edf1d2905c1.tar.zst bun-b9567eb193a90aebb3e271de56dd3edf1d2905c1.zip | |
[bun install] Fix directory bin link bug
| -rw-r--r-- | src/install/bin.zig | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/install/bin.zig b/src/install/bin.zig index 52cdaf292..2d4c09c0a 100644 --- a/src/install/bin.zig +++ b/src/install/bin.zig @@ -67,7 +67,7 @@ pub const Bin = extern struct { return .{ .tag = .map, - .value = .{ .map = ExternalStringList.init(extern_strings_slice, all_extern_strings) }, + .value = .{ .map = ExternalStringList.init(all_extern_strings, extern_strings_slice) }, }; }, }; @@ -157,10 +157,11 @@ pub const Bin = extern struct { if (this.done) return null; if (this.dir_iterator == null) { var target = this.bin.value.dir.slice(this.string_buffer); - var parts = [_][]const u8{ this.package_name.slice(this.string_buffer), target }; if (strings.hasPrefix(target, "./")) { target = target[2..]; } + var parts = [_][]const u8{ this.package_name.slice(this.string_buffer), target }; + var dir = this.package_installed_node_modules; var joined = Path.joinStringBuf(&this.buf, &parts, .auto); @@ -415,18 +416,20 @@ pub const Bin = extern struct { }, .dir => { var target = this.bin.value.dir.slice(this.string_buf); - var parts = [_][]const u8{ name, target }; if (strings.hasPrefix(target, "./")) { target = target[2..]; } + + var parts = [_][]const u8{ name, target }; + std.mem.copy(u8, remain, target); remain = remain[target.len..]; - remain[0] = 0; + var dir = std.fs.Dir{ .fd = this.package_installed_node_modules }; var joined = Path.joinStringBuf(&target_buf, &parts, .auto); - target_buf[joined.len] = 0; - var joined_: [:0]u8 = target_buf[0..joined.len :0]; + @intToPtr([*]u8, @ptrToInt(joined.ptr))[joined.len] = 0; + var joined_: [:0]const u8 = joined.ptr[0..joined.len :0]; var child_dir = dir.openDirZ(joined_, .{ .iterate = true }) catch |err| { this.err = err; return; |
