< prev index next >
src/java.desktop/windows/native/libawt/windows/awt_Menu.cpp
Print this page
*** 237,246 ****
--- 237,247 ----
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,274 ****
if (env->EnsureLocalCapacity(1) < 0) {
return;
}
/* target is a java.awt.Menu */
jobject target = GetTarget(env);
!
int nCount = CountItem(target);
! for (int i = 0; i < nCount; i++) {
AwtMenuItem* awtMenuItem = GetItem(target, i);
if (awtMenuItem != NULL) {
SendDrawItem(awtMenuItem, drawInfo);
}
}
--- 263,275 ----
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 && !env->ExceptionCheck(); i++) {
AwtMenuItem* awtMenuItem = GetItem(target, i);
if (awtMenuItem != NULL) {
SendDrawItem(awtMenuItem, drawInfo);
}
}
*** 292,303 ****
if (env->EnsureLocalCapacity(1) < 0) {
return;
}
/* target is a java.awt.Menu */
jobject target = GetTarget(env);
int nCount = CountItem(target);
! for (int i = 0; i < nCount; i++) {
AwtMenuItem* awtMenuItem = GetItem(target, i);
if (awtMenuItem != NULL) {
SendMeasureItem(awtMenuItem, hDC, measureInfo);
}
}
--- 293,305 ----
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 && !env->ExceptionCheck(); i++) {
AwtMenuItem* awtMenuItem = GetItem(target, i);
if (awtMenuItem != NULL) {
SendMeasureItem(awtMenuItem, hDC, measureInfo);
}
}
< prev index next >