| author | |
| committer | |
| log | b2a514b3d2d2d880a41a26e798fb3c9ee014c229 |
| tree | 9aa31eaef54e46d112b426dbedc0de286885fe48 |
| parent | 16dbb960fc8dada79cd42dd2ba1ebf0f66ccaaec |
Closes #158382 files changed, 6 insertions(+), 1 deletions(-)
src/Sema.zig+4| ... | ... | @@ -22235,6 +22235,10 @@ fn zirMemcpy(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!void |
| 22235 | 22235 | // Change the dest to a slice, since its type must have the length. |
| 22236 | 22236 | const dest_ptr_ptr = try sema.analyzeRef(block, dest_src, new_dest_ptr); |
| 22237 | 22237 | new_dest_ptr = try sema.analyzeSlice(block, dest_src, dest_ptr_ptr, .zero, src_len, .none, .unneeded, dest_src, dest_src, dest_src, false); |
| 22238 | const new_src_ptr_ty = sema.typeOf(new_src_ptr); | |
| 22239 | if (new_src_ptr_ty.isSlice()) { | |
| 22240 | new_src_ptr = try sema.analyzeSlicePtr(block, src_src, new_src_ptr, new_src_ptr_ty); | |
| 22241 | } | |
| 22238 | 22242 | } |
| 22239 | 22243 | |
| 22240 | 22244 | try sema.requireRuntimeBlock(block, src, runtime_src); |
test/behavior/memcpy.zig+2-1| ... | ... | @@ -58,7 +58,8 @@ test "@memcpy dest many pointer" { |
| 58 | 58 | fn testMemcpyDestManyPtr() !void { |
| 59 | 59 | var str = "hello".*; |
| 60 | 60 | var buf: [5]u8 = undefined; |
| 61 | @memcpy(@ptrCast([*]u8, &buf), @ptrCast([*]const u8, &str)[0..5]); | |
| 61 | var len: usize = 5; | |
| 62 | @memcpy(@ptrCast([*]u8, &buf), @ptrCast([*]const u8, &str)[0..len]); | |
| 62 | 63 | try expect(buf[0] == 'h'); |
| 63 | 64 | try expect(buf[1] == 'e'); |
| 64 | 65 | try expect(buf[2] == 'l'); |