diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java index 5343c4a8..99a1bf3c 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImage10MetadataCleaner.java @@ -241,7 +241,12 @@ final class JPEGImage10MetadataCleaner { Node dht = dhts.item(j); NodeList dhtables = dht.getChildNodes(); - if (dhtables.getLength() > 4) { + if (dhtables.getLength() < 1) { + // Why is there an empty DHT node? + dht.getParentNode().removeChild(dht); + reader.processWarningOccurred("Metadata contains empty dht node. Ignoring."); + } + else if (dhtables.getLength() > 4) { IIOMetadataNode acTables = new IIOMetadataNode("dht"); dht.getParentNode().insertBefore(acTables, dht.getNextSibling()); @@ -262,6 +267,8 @@ final class JPEGImage10MetadataCleaner { } catch (IIOInvalidTreeException e) { if (JPEGImageReader.DEBUG) { + new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(imageMetadata.getAsTree(JAVAX_IMAGEIO_JPEG_IMAGE_1_0), false); + System.out.println("-- 8< --"); new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(tree, false); } diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index b9a4e6f6..21adc6cf 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -416,10 +416,11 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestCase