From 2c15560779ec76ec7fe47d61468168c77cbd35ee Mon Sep 17 00:00:00 2001 From: sta Date: Fri, 14 Jun 2019 19:33:42 +0900 Subject: [PATCH] [Modify] Throw exception --- websocket-sharp/Ext.cs | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs index b2091a9b..d6b8a79c 100644 --- a/websocket-sharp/Ext.cs +++ b/websocket-sharp/Ext.cs @@ -1665,14 +1665,30 @@ namespace WebSocketSharp /// public static T[] SubArray (this T[] array, long startIndex, long length) { - long len; - if (array == null || (len = array.LongLength) == 0) + if (array == null) + throw new ArgumentNullException ("array"); + + var len = array.LongLength; + if (len == 0) { + if (startIndex != 0) + throw new ArgumentOutOfRangeException ("startIndex"); + + if (length != 0) + throw new ArgumentOutOfRangeException ("length"); + + return array; + } + + if (startIndex < 0 || startIndex >= len) + throw new ArgumentOutOfRangeException ("startIndex"); + + if (length < 0 || length > len - startIndex) + throw new ArgumentOutOfRangeException ("length"); + + if (length == 0) return new T[0]; - if (startIndex < 0 || length <= 0 || startIndex + length > len) - return new T[0]; - - if (startIndex == 0 && length == len) + if (length == len) return array; var subArray = new T[length];