From 9a821382fd29ef87b443242629a91b357718aa7d Mon Sep 17 00:00:00 2001 From: dweiller <4678790+dweiller@users.noreply.github.com> Date: Mon, 19 Feb 2024 16:24:41 +1100 Subject: [PATCH] compiler-rt: fix overflow when memcpy CopyType size is < 32 --- lib/compiler_rt/memcpy.zig | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/compiler_rt/memcpy.zig b/lib/compiler_rt/memcpy.zig index dac57123a255..623ffa43386c 100644 --- a/lib/compiler_rt/memcpy.zig +++ b/lib/compiler_rt/memcpy.zig @@ -43,11 +43,13 @@ pub fn memcpy(noalias dest: ?[*]u8, noalias src: ?[*]const u8, len: usize) callc return dest; } - inline for (5..std.math.log2(2 * size) + 1) |p| { - const limit = 1 << p; - if (len <= limit) { - memcpy_range2(limit / 2, dest.?, src.?, len); - return dest; + if (5 < std.math.log2(2 * size)) { + inline for (5..std.math.log2(2 * size) + 1) |p| { + const limit = 1 << p; + if (len <= limit) { + memcpy_range2(limit / 2, dest.?, src.?, len); + return dest; + } } }