From 2d896fa29e44ccc98e220257157899475d6eb089 Mon Sep 17 00:00:00 2001 From: Matthew Woodcraft Date: Tue, 15 Oct 2024 20:25:55 +0100 Subject: [PATCH] Say that dereferencing a pointer to a ZST is no longer undefined The new rules were tracked in https://github.com/rust-lang/rust/issues/117945 The corresponding update to the Reference was https://github.com/rust-lang/reference/pull/1541 --- src/exotic-sizes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/exotic-sizes.md b/src/exotic-sizes.md index 5e6a395..a93ab4a 100644 --- a/src/exotic-sizes.md +++ b/src/exotic-sizes.md @@ -106,9 +106,9 @@ consequence of types with no size. In particular, pointer offsets are no-ops, and allocators typically [require a non-zero size][alloc]. Note that references to ZSTs (including empty slices), just like all other -references, must be non-null and suitably aligned. Dereferencing a null or -unaligned pointer to a ZST is [undefined behavior][ub], just like for any other -type. +references, must be non-null and suitably aligned. However, dereferencing a +null pointer to a ZST is not [undefined behavior][ub], unlike pointers to +other types. [alloc]: ../std/alloc/trait.GlobalAlloc.html#tymethod.alloc [ub]: what-unsafe-does.html