diff options
Diffstat (limited to 'src/resolver/resolve_path.zig')
-rw-r--r-- | src/resolver/resolve_path.zig | 20 |
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| { |