Bug 578964 - fix NPE in MenuManagerHideProcessor
Change-Id: I5462b3e33c45fe58d9da9a0a1ff17673e120b2a8
Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.ui/+/192363
Reviewed-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>
Tested-by: Platform Bot <platform-bot@eclipse.org>
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerHideProcessor.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerHideProcessor.java
index ac1b804..1314d2a 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerHideProcessor.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerHideProcessor.java
@@ -92,9 +92,15 @@
if (!menu.isDisposed()) {
menu.getDisplay().asyncExec(() -> {
+ if (menu.isDisposed()) {
+ return; // may be meanwhile disposed
+ }
for (Entry<MDynamicMenuContribution, ArrayList<MMenuElement>> entry : toBeHidden.entrySet()) {
MDynamicMenuContribution currentMenuElement = entry.getKey();
Object contribution = currentMenuElement.getObject();
+ if (contribution != null) {
+ continue; // avoid NPE (Bug 578964)
+ }
IEclipseContext dynamicMenuContext = EclipseContextFactory.create();
ArrayList<MMenuElement> mel = entry.getValue();
@@ -103,7 +109,7 @@
dynamicMenuContext.set(MDynamicMenuContribution.class, currentMenuElement);
IEclipseContext parentContext = modelService.getContainingContext(currentMenuElement);
ContextInjectionFactory.invoke(contribution, AboutToHide.class, parentContext,
- dynamicMenuContext, null);
+ dynamicMenuContext, null); // contribution==null => NPE (Bug 578964)
dynamicMenuContext.dispose();
// remove existing entries for this dynamic
// contribution item if there are any