< prev index next >
src/java.desktop/windows/native/libawt/windows/awt_Menu.cpp
Print this page
@@ -237,10 +237,11 @@
if (env->EnsureLocalCapacity(2) < 0) {
return NULL;
}
jobject menuItem = env->CallObjectMethod(target, AwtMenu::getItemMID,
index);
+ if (!menuItem) return NULL; // menu item was removed concurrently
DASSERT(!safe_ExceptionOccurred(env));
jobject wMenuItemPeer = GetPeerForTarget(env, menuItem);
PDATA pData;
@@ -262,13 +263,13 @@
if (env->EnsureLocalCapacity(1) < 0) {
return;
}
/* target is a java.awt.Menu */
jobject target = GetTarget(env);
-
+ if(!target || env->ExceptionCheck()) return;
int nCount = CountItem(target);
- for (int i = 0; i < nCount; i++) {
+ for (int i = 0; i < nCount && !env->ExceptionCheck(); i++) {
AwtMenuItem* awtMenuItem = GetItem(target, i);
if (awtMenuItem != NULL) {
SendDrawItem(awtMenuItem, drawInfo);
}
}
@@ -292,12 +293,13 @@
if (env->EnsureLocalCapacity(1) < 0) {
return;
}
/* target is a java.awt.Menu */
jobject target = GetTarget(env);
+ if(!target || env->ExceptionCheck()) return;
int nCount = CountItem(target);
- for (int i = 0; i < nCount; i++) {
+ for (int i = 0; i < nCount && !env->ExceptionCheck(); i++) {
AwtMenuItem* awtMenuItem = GetItem(target, i);
if (awtMenuItem != NULL) {
SendMeasureItem(awtMenuItem, hDC, measureInfo);
}
}
< prev index next >