Browse Source

don't marshal multidimensional arrays

antonWetzel 2 years ago
parent
commit
5090355907

+ 6 - 2
modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/MarshalUtils.cs

@@ -156,6 +156,10 @@ namespace Godot.SourceGenerators
                     else if (typeKind == TypeKind.Array)
                     else if (typeKind == TypeKind.Array)
                     {
                     {
                         var arrayType = (IArrayTypeSymbol)type;
                         var arrayType = (IArrayTypeSymbol)type;
+
+                        if (arrayType.Rank != 1)
+                            return null;
+
                         var elementType = arrayType.ElementType;
                         var elementType = arrayType.ElementType;
 
 
                         switch (elementType.SpecialType)
                         switch (elementType.SpecialType)
@@ -177,8 +181,8 @@ namespace Godot.SourceGenerators
                         if (elementType.SimpleDerivesFrom(typeCache.GodotObjectType))
                         if (elementType.SimpleDerivesFrom(typeCache.GodotObjectType))
                             return MarshalType.GodotObjectOrDerivedArray;
                             return MarshalType.GodotObjectOrDerivedArray;
 
 
-                        if (elementType.ContainingAssembly.Name == "GodotSharp" &&
-                            elementType.ContainingNamespace.Name == "Godot")
+                        if (elementType.ContainingAssembly?.Name == "GodotSharp" &&
+                            elementType.ContainingNamespace?.Name == "Godot")
                         {
                         {
                             switch (elementType)
                             switch (elementType)
                             {
                             {