8035743: [parfait] JNI exception pending in jdk/src/windows/native/sun/windows/awt_Frame.cpp
authorserb
Mon, 17 Mar 2014 15:31:58 +0400
changeset 23658 866c3d52a4df
parent 23657 1bc509cbe2a3
child 23659 ac5179bc5c63
8035743: [parfait] JNI exception pending in jdk/src/windows/native/sun/windows/awt_Frame.cpp Reviewed-by: pchelko, azvegint
jdk/src/windows/native/sun/windows/awt_Frame.cpp
--- 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);