diff --git a/src/ImageSharp/Formats/Jpeg/Components/Encoder/HuffmanScanEncoder.cs b/src/ImageSharp/Formats/Jpeg/Components/Encoder/HuffmanScanEncoder.cs index 8457ddbf3..43d7b07b9 100644 --- a/src/ImageSharp/Formats/Jpeg/Components/Encoder/HuffmanScanEncoder.cs +++ b/src/ImageSharp/Formats/Jpeg/Components/Encoder/HuffmanScanEncoder.cs @@ -458,13 +458,17 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Encoder #endif } + /// + /// Returns index of the last non-zero element in given mcu block, returns -1 if all elements are zero + /// + /// Input mcu. + /// Index of the last non-zero element. [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static int GetLastNonZeroElement(ref Block8x8F block) + internal static int GetLastNonZeroElement(ref Block8x8F block) { int index = 63; - ref float elemRef = ref Unsafe.As(ref block); - while ((int)Unsafe.Add(ref elemRef, index) == 0) + while (index > -1 && (int)Unsafe.Add(ref elemRef, index) == 0) { index--; }