]> git.sesse.net Git - fjl/blobdiff - zigzag.h
Kill AC_END_OF_BLOCK as well.
[fjl] / zigzag.h
index 3fc137710581211a137edc7d84633bee0c653b1e..5d9df28ec457e9a048587d14ae81321d714a5b98 100644 (file)
--- a/zigzag.h
+++ b/zigzag.h
@@ -4,10 +4,10 @@
 #include "idct.h"
 
 // Table for transforming from zig-zag order to natural order.
 #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.
 // 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,
        // Regular entries.
         0,  1,  8, 16,  9,  2,  3, 10,
        17, 24, 32, 25, 18, 11,  4,  5,
@@ -18,7 +18,14 @@ static const unsigned unzigzag[DCTSIZE2 + 16] = {
        58, 59, 52, 45, 38, 31, 39, 46,
        53, 60, 61, 54, 47, 55, 62, 63,
 
        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,
 };
        63, 63, 63, 63, 63, 63, 63, 63,
        63, 63, 63, 63, 63, 63, 63, 63,
 };