8035743: [parfait] JNI exception pending in jdk/src/windows/native/sun/windows/awt_Frame.cpp
Reviewed-by: pchelko, azvegint
--- a/jdk/src/windows/native/sun/windows/awt_Frame.cpp Mon Mar 17 13:10:24 2014 +0400
+++ b/jdk/src/windows/native/sun/windows/awt_Frame.cpp Mon Mar 17 15:31:58 2014 +0400
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -173,8 +173,11 @@
BOOL isEmbeddedInstance = FALSE;
BOOL isEmbedded = FALSE;
cls = env->FindClass("sun/awt/EmbeddedFrame");
+
if (cls) {
isEmbeddedInstance = env->IsInstanceOf(target, cls);
+ } else {
+ throw std::bad_alloc();
}
INT_PTR handle;
if (isEmbeddedInstance) {
@@ -189,6 +192,8 @@
cls = env->FindClass("sun/awt/LightweightFrame");
if (cls) {
isLightweight = env->IsInstanceOf(target, cls);
+ } else {
+ throw std::bad_alloc();
}
frame->m_isLightweight = isLightweight;
@@ -260,7 +265,11 @@
// for input method windows, use minimal decorations
inputMethodWindowCls = env->FindClass("sun/awt/im/InputMethodWindow");
- if ((inputMethodWindowCls != NULL) && env->IsInstanceOf(target, inputMethodWindowCls)) {
+ if (inputMethodWindowCls == NULL) {
+ throw std::bad_alloc();
+ }
+
+ if (env->IsInstanceOf(target, inputMethodWindowCls)) {
//for below-the-spot composition window, use no decoration
if (env->GetBooleanField(target, AwtFrame::undecoratedID) == JNI_TRUE){
exStyle = 0;
@@ -1609,9 +1618,10 @@
TRY;
AwtFrame::setExtendedStateMID = env->GetMethodID(cls, "setExtendedState", "(I)V");
- AwtFrame::getExtendedStateMID = env->GetMethodID(cls, "getExtendedState", "()I");
+ DASSERT(AwtFrame::setExtendedStateMID);
+ CHECK_NULL(AwtFrame::setExtendedStateMID);
- DASSERT(AwtFrame::setExtendedStateMID);
+ AwtFrame::getExtendedStateMID = env->GetMethodID(cls, "getExtendedState", "()I");
DASSERT(AwtFrame::getExtendedStateMID);
CATCH_BAD_ALLOC;
@@ -1785,35 +1795,6 @@
/************************************************************************
- * EmbeddedFrame native methods
- */
-
-extern "C" {
-
-/*
- * Class: sun_awt_EmbeddedFrame
- * Method: setPeer
- * Signature: (Ljava/awt/peer/ComponentPeer;)V
- */
-JNIEXPORT void JNICALL
-Java_sun_awt_EmbeddedFrame_setPeer(JNIEnv *env, jobject self, jobject lpeer)
-{
- TRY;
-
- jclass cls;
- jfieldID fid;
-
- cls = env->GetObjectClass(self);
- fid = env->GetFieldID(cls, "peer", "Ljava/awt/peer/ComponentPeer;");
- env->SetObjectField(self, fid, lpeer);
-
- CATCH_BAD_ALLOC;
-}
-
-} /* extern "C" */
-
-
-/************************************************************************
* WEmbeddedFrame native methods
*/
@@ -1831,6 +1812,7 @@
AwtFrame::handleID = env->GetFieldID(cls, "handle", "J");
DASSERT(AwtFrame::handleID != NULL);
+ CHECK_NULL(AwtFrame::handleID);
AwtFrame::activateEmbeddingTopLevelMID = env->GetMethodID(cls, "activateEmbeddingTopLevel", "()V");
DASSERT(AwtFrame::activateEmbeddingTopLevelMID != NULL);