diff --git a/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFFieldNode.java b/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFFieldNode.java index 994d10d7810..35042328494 100644 --- a/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFFieldNode.java +++ b/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFFieldNode.java @@ -38,9 +38,14 @@ import javax.imageio.plugins.tiff.TIFFTagSet; * wherein the child node is procedural rather than buffered. */ public class TIFFFieldNode extends IIOMetadataNode { + private static boolean isIFD(TIFFField f) { + int type = f.getType(); + return f.hasDirectory() && + (type == TIFFTag.TIFF_LONG || type == TIFFTag.TIFF_IFD_POINTER); + } + private static String getNodeName(TIFFField f) { - return (f.hasDirectory() || f.getData() instanceof TIFFDirectory) ? - "TIFFIFD" : "TIFFField"; + return isIFD(f) ? "TIFFIFD" : "TIFFField"; } private boolean isIFD; @@ -52,8 +57,7 @@ public class TIFFFieldNode extends IIOMetadataNode { public TIFFFieldNode(TIFFField field) { super(getNodeName(field)); - isIFD = field.hasDirectory() || - field.getData() instanceof TIFFDirectory; + isIFD = isIFD(field); this.field = field; diff --git a/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/TIFFField.java b/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/TIFFField.java index a6ba3859d2b..8a1fbf20b5d 100644 --- a/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/TIFFField.java +++ b/jdk/src/java.desktop/share/classes/javax/imageio/plugins/tiff/TIFFField.java @@ -843,10 +843,9 @@ public class TIFFField implements Cloneable { * Returns the {@code TIFFField} as a node named either * "TIFFField" or "TIFFIFD" as described in the * TIFF native image metadata specification. The node will be named - * "TIFFIFD" if and only if the field's data object is an - * instance of {@link TIFFDirectory} or equivalently - * {@link TIFFTag#isIFDPointer getTag.isIFDPointer()} returns - * {@code true}. + * "TIFFIFD" if and only if {@link #hasDirectory()} returns + * {@code true} and the field's type is either {@link TIFFTag#TIFF_LONG} + * or {@link TIFFTag#TIFF_IFD_POINTER}. * * @return a {@code Node} named "TIFFField" or * "TIFFIFD".