diff options
| author | HampusM <hampus@hampusmat.com> | 2026-06-11 20:29:07 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-06-11 20:29:07 +0200 |
| commit | bf82dbc8c377453ccb97c7d66f1ef4b8f8ebd6b0 (patch) | |
| tree | 9418962e938e087773708a9cb30d36bb343bd14d /engine-macros/src | |
| parent | bcfb025d8996b9e2d7d7386a3e372331ad11985f (diff) | |
fix(engine): prevent copying uninitialized data from enum variants
Diffstat (limited to 'engine-macros/src')
| -rw-r--r-- | engine-macros/src/reflection/enum_impl.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/engine-macros/src/reflection/enum_impl.rs b/engine-macros/src/reflection/enum_impl.rs index d124db2..b2e01e8 100644 --- a/engine-macros/src/reflection/enum_impl.rs +++ b/engine-macros/src/reflection/enum_impl.rs @@ -197,7 +197,7 @@ pub fn generate(input: syn::ItemEnum) -> proc_macro2::TokenStream } }; - let variants = generate_variants(&input, &engine_crate_path); + let variants = generate_variants(&input, is_unit_only, &engine_crate_path); quote! { #[doc(hidden)] @@ -241,6 +241,7 @@ pub fn generate(input: syn::ItemEnum) -> proc_macro2::TokenStream fn generate_variants<'a>( input: &'a syn::ItemEnum, + is_unit_only: bool, engine_crate_path: &'a syn::Path, ) -> impl Iterator<Item = proc_macro2::TokenStream> + use<'a> { @@ -346,7 +347,7 @@ fn generate_variants<'a>( }; let discriminant = match variant.fields { - syn::Fields::Unit => { + syn::Fields::Unit if is_unit_only => { quote! { let mut buf = [0u8; std::mem::size_of::<i128>()]; |
