File tree 1 file changed +4
-1
lines changed
1 file changed +4
-1
lines changed Original file line number Diff line number Diff line change @@ -72,11 +72,14 @@ Please read the [Rustonomicon] before writing unsafe code.
72
72
* An integer (`i*`/`u*`), floating point value (`f*`), or raw pointer obtained
73
73
from [uninitialized memory][undef], or uninitialized memory in a `str`.
74
74
* A reference or `Box<T>` that is [dangling], misaligned, or points to an invalid value.
75
- * Invalid metadata in a wide reference, `Box<T>`, or raw pointer:
75
+ * Invalid metadata in a wide reference, `Box<T>`, or raw pointer. The requirement
76
+ for the metadata is determined by the type of the unsized tail:
76
77
* `dyn Trait` metadata is invalid if it is not a pointer to a vtable for
77
78
`Trait` that matches the actual dynamic trait the pointer or reference points to.
78
79
* Slice metadata is invalid if the length is not a valid `usize`
79
80
(i.e., it must not be read from uninitialized memory).
81
+ Furthermore, for wide references and `Box<T>`, slice metadata is invalid
82
+ if it makes the total size of the pointed-to value bigger than `isize::MAX`.
80
83
* Invalid values for a type with a custom definition of invalid values.
81
84
In the standard library, this affects [`NonNull<T>`] and [`NonZero*`].
82
85
You can’t perform that action at this time.
0 commit comments