< prev index next >
src/java.desktop/windows/native/libawt/windows/awt_MenuBar.cpp
Print this page
@@ -154,17 +154,20 @@
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_RETURN_NULL(menuItemPeer);
+ JNI_CHECK_PEER_GOTO(menuItemPeer, done);
+
AwtMenuItem* awtMenuItem = (AwtMenuItem*)pData;
+done:
env->DeleteLocalRef(menu);
env->DeleteLocalRef(menuItemPeer);
return awtMenuItem;
}
< prev index next >