From 52f2ce7c17d710a4ef5d45bc3331f8ca3a3a9031 Mon Sep 17 00:00:00 2001 From: Anton Firszov Date: Mon, 20 Dec 2021 17:11:27 +0100 Subject: [PATCH] use Math.DivRem --- .../DiscontiguousBuffers/MemoryGroupExtensions.cs | 4 ++-- .../Memory/DiscontiguousBuffers/MemoryGroup{T}.cs | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroupExtensions.cs b/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroupExtensions.cs index 0df1080e5..d200b223a 100644 --- a/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroupExtensions.cs +++ b/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroupExtensions.cs @@ -37,7 +37,8 @@ namespace SixLabors.ImageSharp.Memory Guard.MustBeGreaterThanOrEqualTo(length, 0, nameof(length)); Guard.MustBeLessThan(start, group.TotalLength, nameof(start)); - int bufferIdx = (int)(start / group.BufferLength); + int bufferIdx = (int)Math.DivRem(start, group.BufferLength, out long bufferStartLong); + int bufferStart = (int)bufferStartLong; // if (bufferIdx < 0 || bufferIdx >= group.Count) if ((uint)bufferIdx >= group.Count) @@ -45,7 +46,6 @@ namespace SixLabors.ImageSharp.Memory throw new ArgumentOutOfRangeException(nameof(start)); } - int bufferStart = (int)(start % group.BufferLength); int bufferEnd = bufferStart + length; Memory memory = group[bufferIdx]; diff --git a/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroup{T}.cs b/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroup{T}.cs index 153dd05e5..9844f4a3b 100644 --- a/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroup{T}.cs +++ b/src/ImageSharp/Memory/DiscontiguousBuffers/MemoryGroup{T}.cs @@ -289,10 +289,9 @@ namespace SixLabors.ImageSharp.Memory /// public Span GetRemainingSliceOfBuffer(long start) { - int bufferIdx = (int)(start / this.BufferLength); - int bufferStart = (int)(start % this.BufferLength); - Memory memory = this[bufferIdx]; - return memory.Span.Slice(bufferStart); + long bufferIdx = Math.DivRem(start, this.BufferLength, out long bufferStart); + Memory memory = this[(int)bufferIdx]; + return memory.Span.Slice((int)bufferStart); } public static bool CanSwapContent(MemoryGroup target, MemoryGroup source) => @@ -314,8 +313,9 @@ namespace SixLabors.ImageSharp.Memory private void GetMultiBufferPosition(int y, int width, out int bufferIdx, out int bufferStart) { long start = y * (long)width; - bufferIdx = (int)(start / this.BufferLength); - bufferStart = (int)(start % this.BufferLength); + long bufferIdxLong = Math.DivRem(start, this.BufferLength, out long bufferStartLong); + bufferIdx = (int)bufferIdxLong; + bufferStart = (int)bufferStartLong; } } }