diff options
Diffstat (limited to 'gfx/webrender_bindings/WebRenderTypes.h')
-rw-r--r-- | gfx/webrender_bindings/WebRenderTypes.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gfx/webrender_bindings/WebRenderTypes.h b/gfx/webrender_bindings/WebRenderTypes.h index 3216a0afd6..84c9d5cf63 100644 --- a/gfx/webrender_bindings/WebRenderTypes.h +++ b/gfx/webrender_bindings/WebRenderTypes.h @@ -667,6 +667,13 @@ struct Vec<uint8_t> final { } void SetEmpty() { + // We need to ensure that (data, capacity, length) always remain valid + // to be passed to Vec::from_raw_parts. In particular, this requires that + // inner.data is always non-null, even for zero-capacity Vecs. + + // Set inner.data to the equivalent of ptr::NonNull::dangling().as_ptr(), + // i.e. a non-null value that is aligned with T's alignment, T being u8 + // here. inner.data = (uint8_t*)1; inner.capacity = 0; inner.length = 0; |