Skip to content

Commit 21bde8b

Browse files
authored
Fixing null checks in equality operators (#311)
1 parent c570a9a commit 21bde8b

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

Tests/IPAddressTests/IPAddressTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,18 +307,26 @@ public void Equality_Tests()
307307
{
308308
var privateAddress = IPAddress.Parse("192.168.0.1");
309309
var publicAddress = IPAddress.Parse("1.1.1.1");
310+
IPAddress defaultAddress = default;
311+
IPAddress nullAddress = null;
312+
313+
// Is
314+
Assert.IsTrue(nullAddress is null, "nullAddress is null");
310315

311316
// Equal
312317
Assert.AreEqual(privateAddress, IPAddress.Parse("192.168.0.1"));
313318
Assert.AreEqual(publicAddress, IPAddress.Parse("1.1.1.1"));
314319
Assert.IsTrue(privateAddress == new IPAddress(new byte[] { 192, 168, 0, 1 }), "192.168.0.1 == 192.168.0.1");
315320
Assert.IsTrue(publicAddress == new IPAddress(new byte[] { 1, 1, 1, 1 }), "1.1.1.1 == 1.1.1.1");
321+
Assert.IsTrue(defaultAddress == default, "default == default");
322+
Assert.IsTrue(nullAddress == null, "nullAddress == null");
316323

317324
// Not Equal
318325
Assert.AreNotEqual(privateAddress, IPAddress.Parse("1.1.1.1"));
319326
Assert.AreNotEqual(publicAddress, IPAddress.Parse("192.168.0.1"));
320327
Assert.IsTrue(privateAddress != new IPAddress(new byte[] { 192, 168, 0, 2 }), "192.168.0.1 == 192.168.0.2");
321328
Assert.IsTrue(publicAddress != new IPAddress(new byte[] { 1, 1, 1, 2 }), "1.1.1.1 == 1.1.1.2");
329+
Assert.IsTrue((IPAddress) null != privateAddress, "(IPAddress) null != privateAddress");
322330
}
323331
}
324332
}

nanoFramework.System.Net/IPAddress.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,15 @@ public IPAddress(byte[] address)
168168
/// <param name="a">The <see cref="IPAddress"/> to compare with <paramref name="b"/>.</param>
169169
/// <param name="b">The <see cref="IPAddress"/> to compare with <paramref name="a"/>.</param>
170170
/// <returns><see langword="true"/> if <paramref name="b"/> is equal to <paramref name="a"/>; otherwise, <see langword="false"/>.</returns>
171-
public static bool operator ==(IPAddress a, IPAddress b) => a is not null && a.Equals(b);
171+
public static bool operator ==(IPAddress a, IPAddress b)
172+
{
173+
if (a is null && b is null)
174+
{
175+
return true;
176+
}
177+
178+
return a is not null && a.Equals(b);
179+
}
172180

173181
/// <summary>
174182
/// Indicates whether two <see cref="IPAddress"/> objects are not equal.

0 commit comments

Comments
 (0)