diff options
author | Gavin Li <gavin@matician.com> | 2022-05-12 13:38:17 -0700 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2022-05-17 13:58:45 +0200 |
commit | 5a01c551993e56d20240ef64d0ec78cd4195855d (patch) | |
tree | 3c64102b533667e36c03f9cab6ff643b9814ebbf /src | |
parent | 92487d4ed4c7ed0c006f461986b410b17f24cfa8 (diff) |
Fix "dereferencing a null pointer" in C layout tests
Instead of dereferencing a null pointer, create a MaybeUninit from which
we can extract well-defined addresses.
Diffstat (limited to 'src')
-rw-r--r-- | src/codegen/mod.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index 4fcbaefd..e4ce9526 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -2192,7 +2192,9 @@ impl CodeGenerator for CompInfo { quote! { assert_eq!( unsafe { - &(*(::#prefix::ptr::null::<#canonical_ident>())).#field_name as *const _ as usize + let uninit = ::#prefix::mem::MaybeUninit::<#canonical_ident>::uninit(); + let ptr = uninit.as_ptr(); + ::#prefix::ptr::addr_of!((*ptr).#field_name) as usize - ptr as usize }, #field_offset, concat!("Offset of field: ", stringify!(#canonical_ident), "::", stringify!(#field_name)) |