diff --git a/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c b/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c index e86fb6c523c..66741e7df2d 100644 --- a/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c +++ b/jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c @@ -1298,6 +1298,29 @@ Java_sun_awt_image_ImagingLib_lookupByteBI(JNIEnv *env, jobject thisLib, return 0; } + nbands = setImageHints(env, srcImageP, dstImageP, FALSE, TRUE, + FALSE, &hint); + + if (nbands < 1 || nbands > srcImageP->cmodel.numComponents) { + /* Can't handle any custom images */ + awt_freeParsedImage(srcImageP, TRUE); + awt_freeParsedImage(dstImageP, TRUE); + return 0; + } + + /* Make sure that color order can be used for + * re-ordering of lookup arrays. + */ + for (i = 0; i < nbands; i++) { + int idx = srcImageP->hints.colorOrder[i]; + + if (idx < 0 || idx >= nbands) { + awt_freeParsedImage(srcImageP, TRUE); + awt_freeParsedImage(dstImageP, TRUE); + return 0; + } + } + lut_nbands = (*env)->GetArrayLength(env, jtableArrays); ncomponents = srcImageP->cmodel.isDefaultCompatCM @@ -1308,19 +1331,6 @@ Java_sun_awt_image_ImagingLib_lookupByteBI(JNIEnv *env, jobject thisLib, lut_nbands = ncomponents; } - /* Make sure that color order can be used for - * re-ordering of lookup arrays. - */ - for (i = 0; i < ncomponents; i++) { - int idx = srcImageP->hints.colorOrder[i]; - - if (idx < 0 || idx >= ncomponents) { - awt_freeParsedImage(srcImageP, TRUE); - awt_freeParsedImage(dstImageP, TRUE); - return 0; - } - } - tbl = NULL; if (SAFE_TO_ALLOC_2(ncomponents, sizeof(unsigned char *))) { tbl = (unsigned char **) @@ -1363,17 +1373,6 @@ Java_sun_awt_image_ImagingLib_lookupByteBI(JNIEnv *env, jobject thisLib, } } - nbands = setImageHints(env, srcImageP, dstImageP, FALSE, TRUE, - FALSE, &hint); - if (nbands < 1) { - /* Can't handle any custom images */ - free(tbl); - free(jtable); - awt_freeParsedImage(srcImageP, TRUE); - awt_freeParsedImage(dstImageP, TRUE); - return 0; - } - /* Allocate the arrays */ if (allocateArray(env, srcImageP, &src, &sdata, TRUE, FALSE, FALSE) < 0) { /* Must be some problem */ diff --git a/jdk/test/java/awt/image/mlib/MlibOpsTest.java b/jdk/test/java/awt/image/mlib/MlibOpsTest.java index aed30d56db2..458616b5e49 100644 --- a/jdk/test/java/awt/image/mlib/MlibOpsTest.java +++ b/jdk/test/java/awt/image/mlib/MlibOpsTest.java @@ -23,7 +23,7 @@ /* * @test - * @bug 6556332 + * @bug 6556332 8011992 * @summary Test verifies that on-demnad loading of medialib library does * not break imageing ops based on this library. * @run main MlibOpsTest