From 344d17714c09e840cb707a16a313f0fc2174a6dd Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 21 Jan 2025 15:39:21 +0100 Subject: [PATCH] Fix crash when using `ref struct` reflection in managed api --- Source/Engine/Engine/NativeInterop.Unmanaged.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Source/Engine/Engine/NativeInterop.Unmanaged.cs b/Source/Engine/Engine/NativeInterop.Unmanaged.cs index 71caee1e9..e0900f663 100644 --- a/Source/Engine/Engine/NativeInterop.Unmanaged.cs +++ b/Source/Engine/Engine/NativeInterop.Unmanaged.cs @@ -340,6 +340,8 @@ namespace FlaxEngine.Interop { Type type = Unsafe.As(typeHandle.Target); var fields = type.GetFields(BindingFlags.Static | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + if (type.IsValueType && !type.IsEnum && !type.IsPrimitive && type.GetCustomAttribute() != null) + fields = Array.Empty(); // ref struct are not supported NativeFieldDefinitions* arr = (NativeFieldDefinitions*)NativeAlloc(fields.Length, Unsafe.SizeOf()); for (int i = 0; i < fields.Length; i++)