diff --git a/src/ImageSharp/Common/Helpers/Numerics.cs b/src/ImageSharp/Common/Helpers/Numerics.cs index da226db11..2a9b5ca08 100644 --- a/src/ImageSharp/Common/Helpers/Numerics.cs +++ b/src/ImageSharp/Common/Helpers/Numerics.cs @@ -275,13 +275,13 @@ namespace SixLabors.ImageSharp [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void Clamp(Span span, byte min, byte max) { - int reduced = ClampReduce(span, min, max); + Span remainder = span.Slice(ClampReduce(span, min, max)); - if (reduced > 0) + if (remainder.Length > 0) { - for (int i = reduced; i < span.Length; i++) + for (int i = 0; i < remainder.Length; i++) { - ref byte v = ref span[i]; + ref byte v = ref remainder[i]; v = Clamp(v, min, max); } } @@ -296,13 +296,13 @@ namespace SixLabors.ImageSharp [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void Clamp(Span span, uint min, uint max) { - int reduced = ClampReduce(span, min, max); + Span remainder = span.Slice(ClampReduce(span, min, max)); - if (reduced > 0) + if (remainder.Length > 0) { - for (int i = reduced; i < span.Length; i++) + for (int i = 0; i < remainder.Length; i++) { - ref uint v = ref span[i]; + ref uint v = ref remainder[i]; v = Clamp(v, min, max); } } @@ -317,13 +317,13 @@ namespace SixLabors.ImageSharp [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void Clamp(Span span, int min, int max) { - int reduced = ClampReduce(span, min, max); + Span remainder = span.Slice(ClampReduce(span, min, max)); - if (reduced > 0) + if (remainder.Length > 0) { - for (int i = reduced; i < span.Length; i++) + for (int i = 0; i < remainder.Length; i++) { - ref int v = ref span[i]; + ref int v = ref remainder[i]; v = Clamp(v, min, max); } } @@ -338,13 +338,13 @@ namespace SixLabors.ImageSharp [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void Clamp(Span span, float min, float max) { - int reduced = ClampReduce(span, min, max); + Span remainder = span.Slice(ClampReduce(span, min, max)); - if (reduced > 0) + if (remainder.Length > 0) { - for (int i = reduced; i < span.Length; i++) + for (int i = 0; i < remainder.Length; i++) { - ref float v = ref span[i]; + ref float v = ref remainder[i]; v = Clamp(v, min, max); } } @@ -359,13 +359,13 @@ namespace SixLabors.ImageSharp [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void Clamp(Span span, double min, double max) { - int reduced = ClampReduce(span, min, max); + Span remainder = span.Slice(ClampReduce(span, min, max)); - if (reduced > 0) + if (remainder.Length > 0) { - for (int i = reduced; i < span.Length; i++) + for (int i = 0; i < remainder.Length; i++) { - ref double v = ref span[i]; + ref double v = ref remainder[i]; v = Clamp(v, min, max); } }