diff --git a/src/libraries/System.Private.CoreLib/src/System/MemoryExtensions.cs b/src/libraries/System.Private.CoreLib/src/System/MemoryExtensions.cs index d72dd9995458ba..eeb0e7485f3c05 100644 --- a/src/libraries/System.Private.CoreLib/src/System/MemoryExtensions.cs +++ b/src/libraries/System.Private.CoreLib/src/System/MemoryExtensions.cs @@ -4735,6 +4735,8 @@ ref Unsafe.As(ref dst), ReplaceDefaultComparer(source, destination, oldValue, newValue); static void ReplaceDefaultComparer(ReadOnlySpan source, Span destination, T oldValue, T newValue) { + destination = destination.Slice(0, source.Length); + for (int i = 0; i < source.Length; i++) { destination[i] = EqualityComparer.Default.Equals(source[i], oldValue) ? newValue : source[i]; @@ -4746,7 +4748,9 @@ static void ReplaceDefaultComparer(ReadOnlySpan source, Span destination, ReplaceComparer(source, destination, oldValue, newValue, comparer); static void ReplaceComparer(ReadOnlySpan source, Span destination, T oldValue, T newValue, IEqualityComparer? comparer) { + destination = destination.Slice(0, source.Length); comparer ??= EqualityComparer.Default; + for (int i = 0; i < source.Length; i++) { destination[i] = comparer.Equals(source[i], oldValue) ? newValue : source[i];