#include "idct.h"
// Table for transforming from zig-zag order to natural order.
-// We use the same trick as libjpeg here; there are 16 extra entries
+// We use the same trick as libjpeg here; there are 64 extra entries
// after the end of the table, since the run-length decoder could
// potentially cause entries indices >= 64 to be decoded.
-static const unsigned unzigzag[DCTSIZE2 + 16] = {
+static const unsigned unzigzag[DCTSIZE2 * 2] = {
// Regular entries.
0, 1, 8, 16, 9, 2, 3, 10,
17, 24, 32, 25, 18, 11, 4, 5,
58, 59, 52, 45, 38, 31, 39, 46,
53, 60, 61, 54, 47, 55, 62, 63,
- // Extra padding entries; should never be referenced in well-formed data.
+ // Extra padding entries.
+ // May get referenced by malformed data or during end-of-block processing.
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
63, 63, 63, 63, 63, 63, 63, 63,
63, 63, 63, 63, 63, 63, 63, 63,
};