diff options
| author | Veikka Tuominen <git@vexu.eu> | 2023-05-14 12:48:11 +0300 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2023-05-15 10:31:24 +0300 |
| commit | ab5a72f6ca9446820f3f516873e1b5d1aeefb5a8 (patch) | |
| tree | 9c0320b0a067d6ea8fd3b7831cc6e1de55dfc5fa /test/behavior | |
| parent | 2ce9122a009efa0a5d2857a0d29ad3d77a81dff1 (diff) | |
| download | zig-ab5a72f6ca9446820f3f516873e1b5d1aeefb5a8.tar.gz zig-ab5a72f6ca9446820f3f516873e1b5d1aeefb5a8.zip | |
Sema: ensure dest ptr of memcpy has length
Closes #15513
Diffstat (limited to 'test/behavior')
| -rw-r--r-- | test/behavior/memcpy.zig | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/behavior/memcpy.zig b/test/behavior/memcpy.zig index 66657b26c9..a2aad42402 100644 --- a/test/behavior/memcpy.zig +++ b/test/behavior/memcpy.zig @@ -44,3 +44,24 @@ fn testMemcpyBothSinglePtrArrayOneIsNullTerminated() !void { try expect(buf[98] == 'l'); try expect(buf[99] == 'o'); } + +test "@memcpy dest many pointer" { + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; + + try testMemcpyDestManyPtr(); + try comptime testMemcpyDestManyPtr(); +} + +fn testMemcpyDestManyPtr() !void { + var str = "hello".*; + var buf: [5]u8 = undefined; + @memcpy(@ptrCast([*]u8, &buf), @ptrCast([*]const u8, &str)[0..5]); + try expect(buf[0] == 'h'); + try expect(buf[1] == 'e'); + try expect(buf[2] == 'l'); + try expect(buf[3] == 'l'); + try expect(buf[4] == 'o'); +} |
