提交 05d96cf7 编写于 作者: S serb

8049057: JNI exception pending in jdk/src/windows/native/sun/windows/

Reviewed-by: pchelko, prr
上级 dd55afd3
...@@ -467,7 +467,9 @@ void AwtComponent::InitPeerGraphicsConfig(JNIEnv *env, jobject peer) ...@@ -467,7 +467,9 @@ void AwtComponent::InitPeerGraphicsConfig(JNIEnv *env, jobject peer)
jclass win32GCCls = env->FindClass("sun/awt/Win32GraphicsConfig"); jclass win32GCCls = env->FindClass("sun/awt/Win32GraphicsConfig");
DASSERT(win32GCCls != NULL); DASSERT(win32GCCls != NULL);
DASSERT(env->IsInstanceOf(compGC, win32GCCls)); DASSERT(env->IsInstanceOf(compGC, win32GCCls));
CHECK_NULL(win32GCCls); if (win32GCCls == NULL) {
throw std::bad_alloc();
}
env->SetObjectField(peer, AwtComponent::peerGCID, compGC); env->SetObjectField(peer, AwtComponent::peerGCID, compGC);
} }
} }
......
...@@ -229,9 +229,10 @@ void AwtCursor::UpdateCursor(AwtComponent *comp) { ...@@ -229,9 +229,10 @@ void AwtCursor::UpdateCursor(AwtComponent *comp) {
if (cur != NULL) { if (cur != NULL) {
::SetCursor(cur); ::SetCursor(cur);
} else { } else {
safe_ExceptionOccurred(env); if (safe_ExceptionOccurred(env)) {
env->ExceptionClear();
}
} }
if (AwtCursor::updateCursorID == NULL) { if (AwtCursor::updateCursorID == NULL) {
jclass cls = jclass cls =
env->FindClass("sun/awt/windows/WGlobalCursorManager"); env->FindClass("sun/awt/windows/WGlobalCursorManager");
......
...@@ -758,6 +758,7 @@ Java_sun_awt_windows_WPrinterJob_getDefaultPage(JNIEnv *env, jobject self, ...@@ -758,6 +758,7 @@ Java_sun_awt_windows_WPrinterJob_getDefaultPage(JNIEnv *env, jobject self,
// through print dialog or start of printing // through print dialog or start of printing
// None of those may have happened yet, so call initPrinter() // None of those may have happened yet, so call initPrinter()
initPrinter(env, self); initPrinter(env, self);
JNU_CHECK_EXCEPTION(env);
HANDLE hDevNames = AwtPrintControl::getPrintHDName(env, self); HANDLE hDevNames = AwtPrintControl::getPrintHDName(env, self);
HDC hdc = AwtPrintControl::getPrintDC(env, self); HDC hdc = AwtPrintControl::getPrintDC(env, self);
...@@ -1102,6 +1103,7 @@ Java_sun_awt_windows_WPrinterJob_initPrinter(JNIEnv *env, jobject self) { ...@@ -1102,6 +1103,7 @@ Java_sun_awt_windows_WPrinterJob_initPrinter(JNIEnv *env, jobject self) {
jboolean err; jboolean err;
initPrinter(env, self); initPrinter(env, self);
JNU_CHECK_EXCEPTION(env);
// check for collation // check for collation
HGLOBAL hDevNames = AwtPrintControl::getPrintHDName(env, self); HGLOBAL hDevNames = AwtPrintControl::getPrintHDName(env, self);
...@@ -1362,6 +1364,13 @@ Java_sun_awt_windows_WPrinterJob__1startDoc(JNIEnv *env, jobject self, ...@@ -1362,6 +1364,13 @@ Java_sun_awt_windows_WPrinterJob__1startDoc(JNIEnv *env, jobject self,
} }
initPrinter(env, self); initPrinter(env, self);
if (env->ExceptionCheck()) {
if (dest != NULL) {
JNU_ReleaseStringPlatformChars(env, dest, destination);
}
return JNI_FALSE;
}
HDC printDC = AwtPrintControl::getPrintDC(env, self); HDC printDC = AwtPrintControl::getPrintDC(env, self);
SAVE_CONTROLWORD SAVE_CONTROLWORD
...@@ -3827,6 +3836,7 @@ void setCapabilities(JNIEnv *env, jobject self, HDC printDC) { ...@@ -3827,6 +3836,7 @@ void setCapabilities(JNIEnv *env, jobject self, HDC printDC) {
// pixels per inch in y direction // pixels per inch in y direction
jint yRes = GetDeviceCaps(printDC, LOGPIXELSY); jint yRes = GetDeviceCaps(printDC, LOGPIXELSY);
err = setIntField(env, self, YRES_STR, yRes); err = setIntField(env, self, YRES_STR, yRes);
if (err) return;
// x coord of printable area in pixels // x coord of printable area in pixels
jint xOrg = GetDeviceCaps(printDC, PHYSICALOFFSETX); jint xOrg = GetDeviceCaps(printDC, PHYSICALOFFSETX);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册