From bf82dbc8c377453ccb97c7d66f1ef4b8f8ebd6b0 Mon Sep 17 00:00:00 2001 From: HampusM Date: Thu, 11 Jun 2026 20:29:07 +0200 Subject: fix(engine): prevent copying uninitialized data from enum variants --- engine-macros/src/reflection/enum_impl.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'engine-macros') 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 + 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::()]; -- cgit v1.2.3-18-g5258