diff --git a/src/share/classes/java/awt/image/PackedColorModel.java b/src/share/classes/java/awt/image/PackedColorModel.java index 532f8d2678bb467abc4c1e3e38a0d9bfbc8a9e8f..b2ab7ad9c91657dcce27d797cd196a0fa9a4fcf2 100644 --- a/src/share/classes/java/awt/image/PackedColorModel.java +++ b/src/share/classes/java/awt/image/PackedColorModel.java @@ -343,8 +343,13 @@ public abstract class PackedColorModel extends ColorModel { if (bitMasks.length != maskArray.length) { return false; } + + /* compare 'effective' masks only, i.e. only part of the mask + * which fits the capacity of the transfer type. + */ + int maxMask = (int)((1L << DataBuffer.getDataTypeSize(transferType)) - 1); for (int i=0; i < bitMasks.length; i++) { - if (bitMasks[i] != maskArray[i]) { + if ((maxMask & bitMasks[i]) != (maxMask & maskArray[i])) { return false; } }