diff options
-rw-r--r-- | src/mscorlib/shared/System/Memory.cs | 13 | ||||
-rw-r--r-- | src/mscorlib/shared/System/ReadOnlyMemory.cs | 2 | ||||
-rw-r--r-- | src/mscorlib/src/System/ThrowHelper.cs | 3 |
3 files changed, 10 insertions, 8 deletions
diff --git a/src/mscorlib/shared/System/Memory.cs b/src/mscorlib/shared/System/Memory.cs index 6eb5af665d..3ccb76b2e5 100644 --- a/src/mscorlib/shared/System/Memory.cs +++ b/src/mscorlib/shared/System/Memory.cs @@ -120,7 +120,9 @@ namespace System /// <param name="manager">The memory manager.</param> /// <param name="start">The index at which to begin the memory.</param> /// <param name="length">The number of items in the memory.</param> - /// <remarks>Returns default when <paramref name="manager"/> is null.</remarks> + /// <exception cref="System.ArgumentNullException"> + /// Thrown when <paramref name="manager"/> is null. + /// </exception> /// <exception cref="System.ArgumentOutOfRangeException"> /// Thrown when the specified <paramref name="start"/> or end index is not in the range (<0 or >=Length). /// </exception> @@ -128,12 +130,7 @@ namespace System public Memory(MemoryManager<T> manager, int start, int length) { if (manager == null) - { - if (start != 0 || length != 0) - ThrowHelper.ThrowArgumentOutOfRangeException(); - this = default; - return; // returns default - } + ThrowHelper.ThrowArgumentNullException(ExceptionArgument.manager); if ((uint)start > (uint)manager.Length || (uint)length > (uint)(manager.Length - start)) ThrowHelper.ThrowArgumentOutOfRangeException(); @@ -276,6 +273,7 @@ namespace System if (_index < 0) { Debug.Assert(_length >= 0); + Debug.Assert(_object != null); return ((MemoryManager<T>)_object).GetSpan().Slice(_index & RemoveFlagsBitMask, _length); } else if (typeof(T) == typeof(char) && _object is string s) @@ -335,6 +333,7 @@ namespace System { if (_index < 0) { + Debug.Assert(_object != null); return ((MemoryManager<T>)_object).Pin((_index & RemoveFlagsBitMask)); } else if (typeof(T) == typeof(char) && _object is string s) diff --git a/src/mscorlib/shared/System/ReadOnlyMemory.cs b/src/mscorlib/shared/System/ReadOnlyMemory.cs index ca0e7d888e..3e7884528e 100644 --- a/src/mscorlib/shared/System/ReadOnlyMemory.cs +++ b/src/mscorlib/shared/System/ReadOnlyMemory.cs @@ -187,6 +187,7 @@ namespace System if (_index < 0) { Debug.Assert(_length >= 0); + Debug.Assert(_object != null); return ((MemoryManager<T>)_object).GetSpan().Slice(_index & RemoveFlagsBitMask, _length); } else if (typeof(T) == typeof(char) && _object is string s) @@ -241,6 +242,7 @@ namespace System { if (_index < 0) { + Debug.Assert(_object != null); return ((MemoryManager<T>)_object).Pin((_index & RemoveFlagsBitMask)); } else if (typeof(T) == typeof(char) && _object is string s) diff --git a/src/mscorlib/src/System/ThrowHelper.cs b/src/mscorlib/src/System/ThrowHelper.cs index eb6a638b00..b1a2fec7ef 100644 --- a/src/mscorlib/src/System/ThrowHelper.cs +++ b/src/mscorlib/src/System/ThrowHelper.cs @@ -479,7 +479,8 @@ namespace System comparable, source, state, - comparisonType + comparisonType, + manager } // |