Skip to content

Commit 8d914ea

Browse files
committed
compiler_rt memcpy: avoid infinite recursion
when compiled in debug mode (--debug-rt)
1 parent 1d8857b commit 8d914ea

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

lib/compiler_rt/memcpy.zig

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,11 @@ inline fn copyRange4(
175175
const last = len - copy_len;
176176
const pen = last - b;
177177

178-
dest[0..copy_len].* = src[0..copy_len].*;
179-
dest[b..][0..copy_len].* = src[b..][0..copy_len].*;
180-
dest[pen..][0..copy_len].* = src[pen..][0..copy_len].*;
181-
dest[last..][0..copy_len].* = src[last..][0..copy_len].*;
178+
const Int = @Type(.{ .int = .{ .signedness = .unsigned, .bits = copy_len * 8 } });
179+
@as(*align(1) Int, @ptrCast(dest[0..copy_len])).* = @as(*align(1) const Int, @ptrCast(src[0..copy_len])).*;
180+
@as(*align(1) Int, @ptrCast(dest[b..][0..copy_len])).* = @as(*align(1) const Int, @ptrCast(src[b..][0..copy_len])).*;
181+
@as(*align(1) Int, @ptrCast(dest[pen..][0..copy_len])).* = @as(*align(1) const Int, @ptrCast(src[pen..][0..copy_len])).*;
182+
@as(*align(1) Int, @ptrCast(dest[last..][0..copy_len])).* = @as(*align(1) const Int, @ptrCast(src[last..][0..copy_len])).*;
182183
}
183184

184185
test "memcpy" {

0 commit comments

Comments
 (0)