@@ -22146,7 +22146,7 @@ fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void
|
||||
const len = try sema.usizeCast(block, dest_src, len_u64);
|
||||
for (0..len) |i| {
|
||||
const elem_index = try sema.addIntUnsigned(Type.usize, i);
|
||||
const dest_elem_ptr = try sema.elemPtr(
|
||||
const dest_elem_ptr = try sema.elemPtrOneLayerOnly(
|
||||
block,
|
||||
src,
|
||||
dest_ptr,
|
||||
@@ -22155,7 +22155,7 @@ fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void
|
||||
true, // init
|
||||
false, // oob_safety
|
||||
);
|
||||
const src_elem_ptr = try sema.elemPtr(
|
||||
const src_elem_ptr = try sema.elemPtrOneLayerOnly(
|
||||
block,
|
||||
src,
|
||||
src_ptr,
|
||||
|
||||
@@ -65,3 +65,16 @@ fn testMemcpyDestManyPtr() !void {
|
||||
try expect(buf[3] == 'l');
|
||||
try expect(buf[4] == 'o');
|
||||
}
|
||||
|
||||
comptime {
|
||||
const S = struct {
|
||||
buffer: [8]u8 = undefined,
|
||||
fn set(self: *@This(), items: []const u8) void {
|
||||
@memcpy(self.buffer[0..items.len], items);
|
||||
}
|
||||
};
|
||||
|
||||
var s = S{};
|
||||
s.set("hello");
|
||||
if (!std.mem.eql(u8, s.buffer[0..5], "hello")) @compileError("bad");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user