| 1 | const std = @import("std"); |
| 2 | |
| 3 | test "pointer alignment safety" { |
| 4 | var array align(4) = [_]u32{ 0x11111111, 0x11111111 }; |
| 5 | const bytes = std.mem.sliceAsBytes(array[0..]); |
| 6 | try std.testing.expectEqual(0x11111111, foo(bytes)); |
| 7 | } |
| 8 | fn foo(bytes: []u8) u32 { |
| 9 | const slice4 = bytes[1..5]; |
| 10 | const int_slice = std.mem.bytesAsSlice(u32, @as([]align(4) u8, @alignCast(slice4))); |
| 11 | return int_slice[0]; |
| 12 | } |
| 13 | |
| 14 | // test_safety=incorrect alignment |