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".