Browse Source

Fixed a bug causing types with fields to have size 0 for their layouts.

Signed-off-by: Dimitar Dobrev <dpldobrev@protonmail.com>
pull/661/head
Dimitar Dobrev 9 years ago
parent
commit
e408a84501
  1. 13
      src/Generator/Passes/CheckAbiParameters.cs

13
src/Generator/Passes/CheckAbiParameters.cs

@ -1,5 +1,4 @@ @@ -1,5 +1,4 @@
using System.Linq;
using CppSharp.AST;
using CppSharp.AST;
namespace CppSharp.Passes
{
@ -29,7 +28,7 @@ namespace CppSharp.Passes @@ -29,7 +28,7 @@ namespace CppSharp.Passes
if (!base.VisitClassDecl(@class))
return false;
if (HasFieldsOrVirtuals(@class))
if (@class.IsDependent || @class.Layout.Fields.Count > 0)
return false;
@class.Layout.Size = @class.Layout.DataSize = 0;
@ -82,13 +81,5 @@ namespace CppSharp.Passes @@ -82,13 +81,5 @@ namespace CppSharp.Passes
return true;
}
private static bool HasFieldsOrVirtuals(Class @class)
{
if (@class.Fields.Count > 0 || @class.IsDynamic)
return true;
return @class.Bases.Any(@base => @base.IsClass && @base.Class != @class &&
HasFieldsOrVirtuals(@base.Class));
}
}
}

Loading…
Cancel
Save