diff --git a/src/solaris/native/sun/java2d/x11/X11PMBlitLoops.c b/src/solaris/native/sun/java2d/x11/X11PMBlitLoops.c index 6b35df41414aad4ad341db5cc63251a05b84aa2a..c94d58b8a626a7ba74da9502895ba7aef144b05a 100644 --- a/src/solaris/native/sun/java2d/x11/X11PMBlitLoops.c +++ b/src/solaris/native/sun/java2d/x11/X11PMBlitLoops.c @@ -241,9 +241,12 @@ Java_sun_java2d_x11_X11PMBlitLoops_updateBitmask width, height, 1); if (xsdo->bitmask == 0) { AWT_UNLOCK(); - JNU_ThrowOutOfMemoryError(env, - "Cannot create bitmask for " - "offscreen surface"); + if (!(*env)->ExceptionCheck(env)) + { + JNU_ThrowOutOfMemoryError(env, + "Cannot create bitmask for " + "offscreen surface"); + } return; } } @@ -253,7 +256,10 @@ Java_sun_java2d_x11_X11PMBlitLoops_updateBitmask 1, XYBitmap, 0, NULL, width, height, 32, 0); if (image == NULL) { AWT_UNLOCK(); - JNU_ThrowOutOfMemoryError(env, "Cannot allocate bitmask for mask"); + if (!(*env)->ExceptionCheck(env)) + { + JNU_ThrowOutOfMemoryError(env, "Cannot allocate bitmask for mask"); + } return; } dstScan = image->bytes_per_line; @@ -261,7 +267,10 @@ Java_sun_java2d_x11_X11PMBlitLoops_updateBitmask if (image->data == NULL) { XFree(image); AWT_UNLOCK(); - JNU_ThrowOutOfMemoryError(env, "Cannot allocate bitmask for mask"); + if (!(*env)->ExceptionCheck(env)) + { + JNU_ThrowOutOfMemoryError(env, "Cannot allocate bitmask for mask"); + } return; } pDst = (unsigned char *)image->data; diff --git a/src/solaris/native/sun/java2d/x11/X11SurfaceData.c b/src/solaris/native/sun/java2d/x11/X11SurfaceData.c index fd48e42cf1ef1bc7a817237abbace4ef422255ec..1f3e92db026e043af41af61e6044f8da8ff2c610 100644 --- a/src/solaris/native/sun/java2d/x11/X11SurfaceData.c +++ b/src/solaris/native/sun/java2d/x11/X11SurfaceData.c @@ -454,6 +454,7 @@ jboolean XShared_initSurface(JNIEnv *env, X11SDOps *xsdo, jint depth, jint width AWT_LOCK(); xsdo->drawable = X11SD_CreateSharedPixmap(xsdo); AWT_UNLOCK(); + JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); if (xsdo->drawable) { xsdo->shmPMData.usingShmPixmap = JNI_TRUE; xsdo->shmPMData.shmPixmap = xsdo->drawable; @@ -469,6 +470,7 @@ jboolean XShared_initSurface(JNIEnv *env, X11SDOps *xsdo, jint depth, jint width xsdo->configData->awt_visInfo.screen), width, height, depth); AWT_UNLOCK(); + JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE); #ifdef MITSHM xsdo->shmPMData.usingShmPixmap = JNI_FALSE; xsdo->shmPMData.pixmap = xsdo->drawable; @@ -504,6 +506,7 @@ Java_sun_java2d_x11_X11SurfaceData_initSurface(JNIEnv *env, jclass xsd, if (xsdo->configData->awt_cmap == (Colormap)NULL) { awtJNI_CreateColorData(env, xsdo->configData, 1); + JNU_CHECK_EXCEPTION(env); } /* color_data will be initialized in awtJNI_CreateColorData for 8-bit visuals */ @@ -805,7 +808,10 @@ static jint X11SD_Lock(JNIEnv *env, xsdo->cData->awt_icmLUT == NULL)) { AWT_UNLOCK(); - JNU_ThrowNullPointerException(env, "colormap lookup table"); + if (!(*env)->ExceptionCheck(env)) + { + JNU_ThrowNullPointerException(env, "colormap lookup table"); + } return SD_FAILURE; } if ((lockflags & SD_LOCK_INVCOLOR) != 0 && @@ -816,7 +822,10 @@ static jint X11SD_Lock(JNIEnv *env, xsdo->cData->img_oda_blue == NULL)) { AWT_UNLOCK(); - JNU_ThrowNullPointerException(env, "inverse colormap lookup table"); + if (!(*env)->ExceptionCheck(env)) + { + JNU_ThrowNullPointerException(env, "inverse colormap lookup table"); + } return SD_FAILURE; } if ((lockflags & SD_LOCK_INVGRAY) != 0 && @@ -824,7 +833,10 @@ static jint X11SD_Lock(JNIEnv *env, xsdo->cData->pGrayInverseLutData == NULL)) { AWT_UNLOCK(); - JNU_ThrowNullPointerException(env, "inverse gray lookup table"); + if (!(*env)->ExceptionCheck(env)) + { + JNU_ThrowNullPointerException(env, "inverse gray lookup table"); + } return SD_FAILURE; } if (xsdo->dgaAvailable && (lockflags & (SD_LOCK_RD_WR))) {