Mercurial > hg > release > icedtea6-1.11
view patches/openjdk/8014205-blank_swing_dialogs_windows.patch @ 2912:d59bbf7333e0
Backport additional fixes.
Additional fixes were applied to jdk7u as part of the security release.
This patch includes a subset of them.
2013-07-01 Omair Majid <omajid@redhat.com>
* patches/openjdk/7188114-alternate_command_line_parser.patch,
* patches/openjdk/7199143-OCSP_timeout.patch,
* patches/openjdk/8006120-server_jre.patch,
* patches/openjdk/8006536-remove_trailing_slashes.patch,
* patches/openjdk/8009165-inappropriate_method_in_reflectutil.patch,
* patches/openjdk/8009217-fix_test_compile.patch,
* patches/openjdk/8009463-space_and_final_backslash.patch,
* patches/openjdk/8009610-blacklist_malware_certificate.patch,
* patches/openjdk/8010213-set_socketoptions_windows.patch,
* patches/openjdk/8010714-xml_dsig_retrievalmethod.patch,
* patches/openjdk/8011154-awt_regresssion.patch,
* patches/openjdk/8011313-OCSP_timeout_wrong_value.patch,
* patches/openjdk/8011992-MlibOpsTest_failed.patch,
* patches/openjdk/8012112-MlibOpsTest_fails.patch,
* patches/openjdk/8012617-arrayindexoutofbounds_linebreakmeasurer.patch,
* patches/openjdk/8012933-appcontext_disposed_too_early.patch,
* patches/openjdk/8013196-TimeZone_getDefault_throws_exception.patch,
* patches/openjdk/8014205-blank_swing_dialogs_windows.patch,
* patches/openjdk/8014427-raster_regresssion.patch,
* patches/openjdk/8014618-strip_leading_zeros_premastersecret.patch,
* patches/openjdk/8014676-javadebugger_space_in_paths.patch,
* patches/openjdk/8014968-OCSP_timeout_default.patch: New file.
Backport from icedtea/openjdk 7.
* Makefile.am (ICEDTEA_PATCHES): Apply the above.
* patches/ecj/override.patch: Add new hunk for BufferedImage.
* NEWS: Update with backports.
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Mon, 01 Jul 2013 21:05:04 -0400 |
parents | |
children |
line wrap: on
line source
# HG changeset patch # User bae # Date 1368792434 -14400 # Node ID 683f472433103a1aaee0bbee21814328fecd91a6 # Parent 8c2f91c4c4b80f8725786a3006ee6043d765af72 8014205: Most of the Swing dialogs are blank on one win7 MUI Reviewed-by: prr, vadim --- openjdk/jdk/src/share/classes/java/awt/image/BufferedImage.java +++ openjdk/jdk/src/share/classes/java/awt/image/BufferedImage.java @@ -35,6 +35,8 @@ import java.awt.geom.Point2D; import java.awt.Point; import java.awt.Rectangle; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.Hashtable; import java.util.Vector; @@ -643,6 +645,7 @@ this.properties = properties; int numBands = raster.getNumBands(); boolean isAlphaPre = cm.isAlphaPremultiplied(); + final boolean isStandard = isStandard(cm, raster); ColorSpace cs; // Force the raster data alpha state to match the premultiplied @@ -653,20 +656,19 @@ cs = cm.getColorSpace(); int csType = cs.getType(); if (csType != ColorSpace.TYPE_RGB) { - if (csType == ColorSpace.TYPE_GRAY - && ComponentColorModel.class.equals(cm.getClass())) { + if (csType == ColorSpace.TYPE_GRAY && + isStandard && + cm instanceof ComponentColorModel) { // Check if this might be a child raster (fix for bug 4240596) if (sm instanceof ComponentSampleModel && ((ComponentSampleModel)sm).getPixelStride() != numBands) { imageType = TYPE_CUSTOM; } else if (raster instanceof ByteComponentRaster && - PixelInterleavedSampleModel.class.equals(sm.getClass()) && raster.getNumBands() == 1 && cm.getComponentSize(0) == 8 && ((ByteComponentRaster)raster).getPixelStride() == 1) { imageType = TYPE_BYTE_GRAY; } else if (raster instanceof ShortComponentRaster && - PixelInterleavedSampleModel.class.equals(sm.getClass()) && raster.getNumBands() == 1 && cm.getComponentSize(0) == 16 && ((ShortComponentRaster)raster).getPixelStride() == 1) { @@ -686,8 +688,8 @@ // are correct int pixSize = cm.getPixelSize(); if (iraster.getPixelStride() == 1 && - DirectColorModel.class.equals(cm.getClass()) && - SinglePixelPackedSampleModel.class.equals(sm.getClass()) && + isStandard && + cm instanceof DirectColorModel && (pixSize == 32 || pixSize == 24)) { // Now check on the DirectColorModel params @@ -718,21 +720,17 @@ } // if (rmask == DCM_BGR_RED_MASK && } // if (iraster.getPixelStride() == 1 } // ((raster instanceof IntegerComponentRaster) && - else if ((IndexColorModel.class.equals(cm.getClass())) && - (numBands == 1) && + else if ((cm instanceof IndexColorModel) && (numBands == 1) && + isStandard && (!cm.hasAlpha() || !isAlphaPre)) { IndexColorModel icm = (IndexColorModel) cm; int pixSize = icm.getPixelSize(); - if (raster instanceof BytePackedRaster && - MultiPixelPackedSampleModel.class.equals(sm.getClass())) - { + if (raster instanceof BytePackedRaster) { imageType = TYPE_BYTE_BINARY; } // if (raster instanceof BytePackedRaster) - else if (raster instanceof ByteComponentRaster && - PixelInterleavedSampleModel.class.equals(sm.getClass())) - { + else if (raster instanceof ByteComponentRaster) { ByteComponentRaster braster = (ByteComponentRaster) raster; if (braster.getPixelStride() == 1 && pixSize <= 8) { imageType = TYPE_BYTE_INDEXED; @@ -740,8 +738,8 @@ } } // else if (cm instanceof IndexColorModel) && (numBands == 1)) else if ((raster instanceof ShortComponentRaster) - && (DirectColorModel.class.equals(cm.getClass())) - && (SinglePixelPackedSampleModel.class.equals(sm.getClass())) + && (cm instanceof DirectColorModel) + && isStandard && (numBands == 3) && !cm.hasAlpha()) { @@ -761,6 +759,7 @@ } // else if ((cm instanceof IndexColorModel) && (numBands == 1)) else if ((raster instanceof ByteComponentRaster) && (cm instanceof ComponentColorModel) + && isStandard && (raster.getSampleModel() instanceof PixelInterleavedSampleModel) && (numBands == 3 || numBands == 4)) { @@ -788,9 +787,7 @@ braster.getPixelStride() == numBands && offs[0] == numBands-1 && offs[1] == numBands-2 && - offs[2] == numBands-3 && - ComponentColorModel.class.equals(ccm.getClass()) && - PixelInterleavedSampleModel.class.equals(csm.getClass())) + offs[2] == numBands-3) { if (numBands == 3 && !ccm.hasAlpha()) { imageType = TYPE_3BYTE_BGR; @@ -804,6 +801,27 @@ } // else if ((raster instanceof ByteComponentRaster) && } + private static boolean isStandard(ColorModel cm, WritableRaster wr) { + final Class<? extends ColorModel> cmClass = cm.getClass(); + final Class<? extends WritableRaster> wrClass = wr.getClass(); + final Class<? extends SampleModel> smClass = wr.getSampleModel().getClass(); + + final PrivilegedAction<Boolean> checkClassLoadersAction = + new PrivilegedAction<Boolean>() + { + + @Override + public Boolean run() { + final ClassLoader std = System.class.getClassLoader(); + + return (cmClass.getClassLoader() == std) && + (smClass.getClassLoader() == std) && + (wrClass.getClassLoader() == std); + } + }; + return AccessController.doPrivileged(checkClassLoadersAction); + } + /** * Returns the image type. If it is not one of the known types, * TYPE_CUSTOM is returned.