From c98b3e1795b97691726f704dcda68daa638e11e1 Mon Sep 17 00:00:00 2001 From: Ahson Khan Date: Wed, 15 Nov 2017 13:25:01 -0800 Subject: [PATCH] Adding null check for implicit cast from array/arraysegment to Span (#15044) Signed-off-by: dotnet-bot-corefx-mirror --- .../src/System.Private.CoreLib/shared/System/ReadOnlySpan.cs | 5 +++-- src/Common/src/System.Private.CoreLib/shared/System/Span.cs | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Common/src/System.Private.CoreLib/shared/System/ReadOnlySpan.cs b/src/Common/src/System.Private.CoreLib/shared/System/ReadOnlySpan.cs index 28fb2e33e052..7a8243d669a0 100644 --- a/src/Common/src/System.Private.CoreLib/shared/System/ReadOnlySpan.cs +++ b/src/Common/src/System.Private.CoreLib/shared/System/ReadOnlySpan.cs @@ -261,12 +261,13 @@ public override int GetHashCode() /// /// Defines an implicit conversion of an array to a /// - public static implicit operator ReadOnlySpan(T[] array) => new ReadOnlySpan(array); + public static implicit operator ReadOnlySpan(T[] array) => array != null ? new ReadOnlySpan(array) : default; /// /// Defines an implicit conversion of a to a /// - public static implicit operator ReadOnlySpan(ArraySegment arraySegment) => new ReadOnlySpan(arraySegment.Array, arraySegment.Offset, arraySegment.Count); + public static implicit operator ReadOnlySpan(ArraySegment arraySegment) + => arraySegment.Array != null ? new ReadOnlySpan(arraySegment.Array, arraySegment.Offset, arraySegment.Count) : default; /// /// Forms a slice out of the given read-only span, beginning at 'start'. diff --git a/src/Common/src/System.Private.CoreLib/shared/System/Span.cs b/src/Common/src/System.Private.CoreLib/shared/System/Span.cs index 90ef2fca068f..ca146aef6597 100644 --- a/src/Common/src/System.Private.CoreLib/shared/System/Span.cs +++ b/src/Common/src/System.Private.CoreLib/shared/System/Span.cs @@ -342,12 +342,13 @@ public override int GetHashCode() /// /// Defines an implicit conversion of an array to a /// - public static implicit operator Span(T[] array) => new Span(array); + public static implicit operator Span(T[] array) => array != null ? new Span(array) : default; /// /// Defines an implicit conversion of a to a /// - public static implicit operator Span(ArraySegment arraySegment) => new Span(arraySegment.Array, arraySegment.Offset, arraySegment.Count); + public static implicit operator Span(ArraySegment arraySegment) + => arraySegment.Array != null ? new Span(arraySegment.Array, arraySegment.Offset, arraySegment.Count) : default; /// /// Defines an implicit conversion of a to a