diff --git a/SabreTools.Hashing/HashWrapper.cs b/SabreTools.Hashing/HashWrapper.cs index 6ec8d78..11dcf1b 100644 --- a/SabreTools.Hashing/HashWrapper.cs +++ b/SabreTools.Hashing/HashWrapper.cs @@ -137,14 +137,8 @@ namespace SabreTools.Hashing break; case IChecksum ic: -#if NET452_OR_GREATER || NETCOREAPP - var icBufferSpan = new ReadOnlySpan(buffer, offset, size); - byte[] trimmedBuffer = icBufferSpan.ToArray(); -#else - byte[] trimmedBuffer = new byte[size]; - Array.Copy(buffer, offset, trimmedBuffer, 0, size); -#endif - ic.Update(trimmedBuffer); + byte[] icBuffer = GetArraySegment(buffer, offset, size); + ic.Update(icBuffer); break; #if NET462_OR_GREATER || NETCOREAPP @@ -208,6 +202,21 @@ namespace SabreTools.Hashing } } + /// + /// Get a segment from the array based on an offset and size + /// + private static byte[] GetArraySegment(byte[] buffer, int offset, int size) + { +#if NET452_OR_GREATER || NETCOREAPP + var icBufferSpan = new ReadOnlySpan(buffer, offset, size); + byte[] trimmedBuffer = icBufferSpan.ToArray(); +#else + byte[] trimmedBuffer = new byte[size]; + Array.Copy(buffer, offset, trimmedBuffer, 0, size); +#endif + return trimmedBuffer; + } + #endregion } } \ No newline at end of file