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--;
}