< prev index next >

src/java.desktop/windows/native/libawt/windows/awt_MenuBar.cpp

Print this page

        

*** 154,170 **** if (env->EnsureLocalCapacity(2) < 0) { return NULL; } jobject menu = env->CallObjectMethod(target, AwtMenuBar::getMenuMID,index); DASSERT(!safe_ExceptionOccurred(env)); jobject menuItemPeer = GetPeerForTarget(env, menu); PDATA pData; ! JNI_CHECK_PEER_RETURN_NULL(menuItemPeer); AwtMenuItem* awtMenuItem = (AwtMenuItem*)pData; env->DeleteLocalRef(menu); env->DeleteLocalRef(menuItemPeer); return awtMenuItem; } --- 154,173 ---- if (env->EnsureLocalCapacity(2) < 0) { return NULL; } jobject menu = env->CallObjectMethod(target, AwtMenuBar::getMenuMID,index); + if (!menu) return NULL; // menu item was removed concurrently DASSERT(!safe_ExceptionOccurred(env)); jobject menuItemPeer = GetPeerForTarget(env, menu); PDATA pData; ! JNI_CHECK_PEER_GOTO(menuItemPeer, done); ! AwtMenuItem* awtMenuItem = (AwtMenuItem*)pData; + done: env->DeleteLocalRef(menu); env->DeleteLocalRef(menuItemPeer); return awtMenuItem; }
< prev index next >