aboutsummaryrefslogtreecommitdiff
path: root/src/resolver/resolve_path.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/resolver/resolve_path.zig')
-rw-r--r--src/resolver/resolve_path.zig20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/resolver/resolve_path.zig b/src/resolver/resolve_path.zig
index f74211709..381abc648 100644
--- a/src/resolver/resolve_path.zig
+++ b/src/resolver/resolve_path.zig
@@ -829,7 +829,25 @@ pub fn joinStringBuf(buf: []u8, _parts: anytype, comptime _platform: Platform) [
var written: usize = 0;
const platform = comptime _platform.resolve();
- var temp_buf: [4096]u8 = undefined;
+ var temp_buf_: [4096]u8 = undefined;
+ var temp_buf: []u8 = &temp_buf_;
+ var free_temp_buf = false;
+ defer {
+ if (free_temp_buf) {
+ bun.default_allocator.free(temp_buf);
+ }
+ }
+
+ var count: usize = 0;
+ for (_parts) |part| {
+ count += if (part.len > 0) part.len + 1 else 0;
+ }
+
+ if (count * 2 > temp_buf.len) {
+ temp_buf = bun.default_allocator.alloc(u8, count * 2) catch @panic("Out of memory");
+ free_temp_buf = true;
+ }
+
temp_buf[0] = 0;
for (_parts) |part| {