8046884: JNI exception pending in jdk/src/solaris/native/sun/java2d/x11: X11PMPLitLoops.c, X11SurfaceData.c

Reviewed-by: prr, serb
This commit is contained in:
Petr Pchelko 2014-07-21 21:41:11 +04:00
parent afd9788ce7
commit df01b0f397
2 changed files with 29 additions and 8 deletions

View File

@ -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;

View File

@ -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))) {