From 098c544fd8a9b7ff8be2892c1c833a63ddd5432e Mon Sep 17 00:00:00 2001 From: prozolic <42107886+prozolic@users.noreply.github.com> Date: Sun, 22 Mar 2026 15:59:50 +0900 Subject: [PATCH] Add null check ImmutableArray.Builder.RemoveAll ImmutableArray.Builder.RemoveAll(Predicate) was missing a null check on the `match` parameter. Passing null would throw NullReferenceException or no exception instead of ArgumentNullException. Add Requires.NotNull for the `match` parameter, and add a test case to verify that null throws ArgumentNullException. --- .../System/Collections/Immutable/ImmutableArray_1.Builder.cs | 2 ++ .../tests/ImmutableArrayBuilderTest.cs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.Builder.cs b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.Builder.cs index 9f596e8f7578a7..4de80f12537927 100644 --- a/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.Builder.cs +++ b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.Builder.cs @@ -540,6 +540,8 @@ public bool Remove(T element, IEqualityComparer? equalityComparer) /// public void RemoveAll(Predicate match) { + Requires.NotNull(match, nameof(match)); + List? removeIndices = null; for (int i = 0; i < _count; i++) { diff --git a/src/libraries/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs b/src/libraries/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs index 841bfc451e332d..df05ab75b25d99 100644 --- a/src/libraries/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs +++ b/src/libraries/System.Collections.Immutable/tests/ImmutableArrayBuilderTest.cs @@ -413,6 +413,8 @@ public void RemoveAll() builder.RemoveAll(n => n % 2 == 0); Assert.Equal(new[] { 1, 3, 5, 7 }, builder); + + AssertExtensions.Throws("match", () => builder.RemoveAll(match: null)); } [Fact]