| author | |
| committer | |
| log | 0bc5e7b5233acdc415e091c4a8c74433b7de2921 |
| tree | eb325dd6ebd4c9d4a1cb6936ff121629322cf709 |
| parent | 2703db3b405b45e897231e85ba884543d684f64f |
Closes #156332 files changed, 15 insertions(+), 2 deletions(-)
src/Sema.zig+2-2| ... | ... | @@ -22146,7 +22146,7 @@ fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void |
| 22146 | 22146 | const len = try sema.usizeCast(block, dest_src, len_u64); |
| 22147 | 22147 | for (0..len) |i| { |
| 22148 | 22148 | const elem_index = try sema.addIntUnsigned(Type.usize, i); |
| 22149 | const dest_elem_ptr = try sema.elemPtr( | |
| 22149 | const dest_elem_ptr = try sema.elemPtrOneLayerOnly( | |
| 22150 | 22150 | block, |
| 22151 | 22151 | src, |
| 22152 | 22152 | dest_ptr, |
| ... | ... | @@ -22155,7 +22155,7 @@ fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void |
| 22155 | 22155 | true, // init |
| 22156 | 22156 | false, // oob_safety |
| 22157 | 22157 | ); |
| 22158 | const src_elem_ptr = try sema.elemPtr( | |
| 22158 | const src_elem_ptr = try sema.elemPtrOneLayerOnly( | |
| 22159 | 22159 | block, |
| 22160 | 22160 | src, |
| 22161 | 22161 | src_ptr, |
test/behavior/memcpy.zig+13| ... | ... | @@ -65,3 +65,16 @@ fn testMemcpyDestManyPtr() !void { |
| 65 | 65 | try expect(buf[3] == 'l'); |
| 66 | 66 | try expect(buf[4] == 'o'); |
| 67 | 67 | } |
| 68 | ||
| 69 | comptime { | |
| 70 | const S = struct { | |
| 71 | buffer: [8]u8 = undefined, | |
| 72 | fn set(self: *@This(), items: []const u8) void { | |
| 73 | @memcpy(self.buffer[0..items.len], items); | |
| 74 | } | |
| 75 | }; | |
| 76 | ||
| 77 | var s = S{}; | |
| 78 | s.set("hello"); | |
| 79 | if (!std.mem.eql(u8, s.buffer[0..5], "hello")) @compileError("bad"); | |
| 80 | } |