diff options
author | 2023-02-25 19:06:11 -0800 | |
---|---|---|
committer | 2023-02-25 19:06:11 -0800 | |
commit | 451ccfd5ef4b6f1539a8a317ee96591228e4cd0a (patch) | |
tree | cf090f347dfdd5af5ee448eadb9b40cfff994070 | |
parent | 2dd484c18089ea86831eeb5e0bd02f29da564f55 (diff) | |
download | bun-451ccfd5ef4b6f1539a8a317ee96591228e4cd0a.tar.gz bun-451ccfd5ef4b6f1539a8a317ee96591228e4cd0a.tar.zst bun-451ccfd5ef4b6f1539a8a317ee96591228e4cd0a.zip |
Update bun.zig
-rw-r--r-- | src/bun.zig | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/bun.zig b/src/bun.zig index eec6a4ecc..8f1c5a542 100644 --- a/src/bun.zig +++ b/src/bun.zig @@ -394,10 +394,12 @@ pub fn copy(comptime Type: type, dest: []Type, src: []const Type) void { std.debug.assert(input.len > 0); std.debug.assert(output.len > 0); - // if input.len overlaps with output.len, we need to copy backwards - const overlaps = isSliceInBuffer(input, output) or isSliceInBuffer(output, input); + const does_input_or_output_overlap = (@ptrToInt(input.ptr) < @ptrToInt(output.ptr) and + @ptrToInt(input.ptr) + input.len > @ptrToInt(output.ptr)) or + (@ptrToInt(output.ptr) < @ptrToInt(input.ptr) and + @ptrToInt(output.ptr) + output.len > @ptrToInt(input.ptr)); - if (!overlaps) { + if (!does_input_or_output_overlap) { @memcpy(output.ptr, input.ptr, input.len); } else { C.memmove(output.ptr, input.ptr, input.len); |