From 1c7e4c38978b14c2787524868bac506fd9c72d27 Mon Sep 17 00:00:00 2001 From: Stefan Ossendorf Date: Mon, 30 Sep 2024 23:28:37 +0200 Subject: [PATCH] Fix EquatableArray.Equals override to avoid an endless recursion and stackoverflow exception (#140) --- src/StronglyTypedIds/EquatableArray.cs | 2 +- test/StronglyTypedIds.Tests/EqualityTests.cs | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/StronglyTypedIds/EquatableArray.cs b/src/StronglyTypedIds/EquatableArray.cs index 70c1030e0..fd4d15123 100644 --- a/src/StronglyTypedIds/EquatableArray.cs +++ b/src/StronglyTypedIds/EquatableArray.cs @@ -37,7 +37,7 @@ public bool Equals(EquatableArray array) /// public override bool Equals(object? obj) { - return obj is EquatableArray array && Equals(this, array); + return obj is EquatableArray array && Equals(array); } /// diff --git a/test/StronglyTypedIds.Tests/EqualityTests.cs b/test/StronglyTypedIds.Tests/EqualityTests.cs index 840276066..8b2eddc14 100644 --- a/test/StronglyTypedIds.Tests/EqualityTests.cs +++ b/test/StronglyTypedIds.Tests/EqualityTests.cs @@ -149,4 +149,12 @@ public void ResultWithDiagnosticHasExpectedEqualityBehaviour() return new Result<(StructToGenerate, bool)>((instance, true), errors); } } + + [Fact] + public void EquatableArrayOverridenEqualsComparesAsExpected() { + var instance = new EquatableArray(["A"]); + object comparand = new EquatableArray(["A"]); + + Assert.True(instance.Equals(comparand)); + } } \ No newline at end of file