From ceebbaea85b99621337466639dd9eda7ea973015 Mon Sep 17 00:00:00 2001 From: Krishna Sannasi Date: Mon, 16 Sep 2019 09:24:25 -0700 Subject: [PATCH] fix soudness hole, dependency on unstable layouts The layouts of `repr(Rust)` types are unstable, so you will need to specify a layout to safely depend on them. Using `repr(C)` is a fine default until we get simething like `repr(linear)` --- src/error/error_impl_small.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/error/error_impl_small.rs b/src/error/error_impl_small.rs index 6ff7c78..3d9a3f3 100644 --- a/src/error/error_impl_small.rs +++ b/src/error/error_impl_small.rs @@ -10,6 +10,7 @@ pub(crate) struct ErrorImpl { inner: &'static mut Inner, } +#[repr(C)] // Dynamically sized inner value struct Inner { backtrace: Backtrace, @@ -25,18 +26,21 @@ extern { type FailData; } +#[repr(C)] #[allow(dead_code)] struct InnerRaw { header: InnerHeader, failure: F, } +#[repr(C)] #[allow(dead_code)] struct InnerHeader { backtrace: Backtrace, vtable: *const VTable, } +#[repr(C)] struct TraitObject { #[allow(dead_code)] data: *const FailData,