aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-02-12 16:02:54 -0800
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-02-12 16:02:54 -0800
commitb9567eb193a90aebb3e271de56dd3edf1d2905c1 (patch)
tree2123a6434e55d5511bb0d73c345c03871d62ea7f
parent7139316ef5ce0e0f6632df5ac43fe15d81652133 (diff)
downloadbun-b9567eb193a90aebb3e271de56dd3edf1d2905c1.tar.gz
bun-b9567eb193a90aebb3e271de56dd3edf1d2905c1.tar.zst
bun-b9567eb193a90aebb3e271de56dd3edf1d2905c1.zip
[bun install] Fix directory bin link bug
-rw-r--r--src/install/bin.zig15
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;