aboutsummaryrefslogtreecommitdiff
path: root/src/install/install.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-09-17 00:21:10 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-09-17 00:21:10 -0700
commitc2f64d4da1a7b037961191124726a9a5865707db (patch)
tree1278e494cef4493ad10ce61793a6d3f2e55be070 /src/install/install.zig
parent9b941dd800df51237815f3c0671c195c04fad1db (diff)
downloadbun-c2f64d4da1a7b037961191124726a9a5865707db.tar.gz
bun-c2f64d4da1a7b037961191124726a9a5865707db.tar.zst
bun-c2f64d4da1a7b037961191124726a9a5865707db.zip
Fix crash when specifying same package name twice in `bun add`
Fixes https://github.com/oven-sh/bun/issues/1202
Diffstat (limited to '')
-rw-r--r--src/install/install.zig9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/install/install.zig b/src/install/install.zig
index e4bbccb7d..38d800c41 100644
--- a/src/install/install.zig
+++ b/src/install/install.zig
@@ -4280,7 +4280,7 @@ pub const PackageManager = struct {
// first one is always either:
// add
// remove
- for (positionals) |positional| {
+ outer: for (positionals) |positional| {
var request = UpdateRequest{
.name = positional,
};
@@ -4325,6 +4325,11 @@ pub const PackageManager = struct {
request.name = std.mem.trim(u8, request.name, "\n\r\t");
if (request.name.len == 0) continue;
+ request.name_hash = String.Builder.stringHash(request.name);
+ for (update_requests.constSlice()) |*prev| {
+ if (prev.name_hash == request.name_hash and request.name.len == prev.name.len) continue :outer;
+ }
+
request.version_buf = std.mem.trim(u8, request.version_buf, "\n\r\t");
// https://github.com/npm/npm-package-arg/blob/fbaf2fd0b72a0f38e7c24260fd4504f4724c9466/npa.js#L330
@@ -4354,7 +4359,7 @@ pub const PackageManager = struct {
const sliced = SlicedString.init(request.version_buf, request.version_buf);
request.version = Dependency.parse(allocator, request.version_buf, &sliced, log) orelse Dependency.Version{};
}
- request.name_hash = String.Builder.stringHash(request.name);
+
update_requests.append(request) catch break;
}