diff --git a/MetadataProvider/SignatureTypeProvider.cs b/MetadataProvider/SignatureTypeProvider.cs index 9ce7a48e..657686d8 100644 --- a/MetadataProvider/SignatureTypeProvider.cs +++ b/MetadataProvider/SignatureTypeProvider.cs @@ -149,7 +149,7 @@ public virtual IType GetPointerType(IType targetType) public virtual IType GetByReferenceType(IType targetType) { - var result = new PointerType(targetType); + var result = new PointerType(targetType, true); return result; } diff --git a/Model/Types/Types.cs b/Model/Types/Types.cs index 0d6934db..e7b163c2 100644 --- a/Model/Types/Types.cs +++ b/Model/Types/Types.cs @@ -656,10 +656,13 @@ public class PointerType : IReferenceType public ISet Attributes { get; private set; } public IType TargetType { get; set; } - public PointerType(IType targetType) + public bool Managed { get; private set; } + + public PointerType(IType targetType, bool managed = false) { this.TargetType = targetType; this.Attributes = new HashSet(); + this.Managed = managed; } public TypeKind TypeKind @@ -674,7 +677,7 @@ public override string ToString() public override int GetHashCode() { - return this.TargetType.GetHashCode(); + return this.TargetType.GetHashCode() ^ this.Managed.GetHashCode(); } public override bool Equals(object obj) @@ -682,7 +685,8 @@ public override bool Equals(object obj) var other = obj as PointerType; var result = other != null && - this.TargetType.Equals(other.TargetType); + this.TargetType.Equals(other.TargetType) && + this.Managed.Equals(other.Managed); return result; }