[547226] Fix potential NPE when closing the editor on 2018-09 and later Make the code more robust using the same rules as used in: https://git.eclipse.org/c/sourceediting/webtools.sourceediting.git/commit/core/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java?id=b260c28651005022730199d1f5fb49f7a182ee2a Bug: 547226 Change-Id: Ic3d406cf0b1abd5b08c30e40e607771740aef458 Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
diff --git a/org.eclipse.gmf.runtime.diagram.ui.resources.editor/src/org/eclipse/gmf/runtime/diagram/ui/resources/editor/parts/DiagramDocumentEditor.java b/org.eclipse.gmf.runtime.diagram.ui.resources.editor/src/org/eclipse/gmf/runtime/diagram/ui/resources/editor/parts/DiagramDocumentEditor.java index bf3ffb7..568d6bd 100644 --- a/org.eclipse.gmf.runtime.diagram.ui.resources.editor/src/org/eclipse/gmf/runtime/diagram/ui/resources/editor/parts/DiagramDocumentEditor.java +++ b/org.eclipse.gmf.runtime.diagram.ui.resources.editor/src/org/eclipse/gmf/runtime/diagram/ui/resources/editor/parts/DiagramDocumentEditor.java
@@ -38,6 +38,7 @@ import org.eclipse.gmf.runtime.diagram.ui.preferences.IPreferenceConstants; import org.eclipse.gmf.runtime.diagram.ui.properties.views.PropertiesBrowserPage; import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.DocumentProviderRegistry; +import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.DocumentProviderRegistry.IDocumentProviderSelector; import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocument; import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDiagramDocumentProvider; import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocument; @@ -45,7 +46,6 @@ import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IDocumentProvider; import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.IElementStateListener; import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.MEditingDomainElement; -import org.eclipse.gmf.runtime.diagram.ui.resources.editor.document.DocumentProviderRegistry.IDocumentProviderSelector; import org.eclipse.gmf.runtime.diagram.ui.resources.editor.internal.EditorPlugin; import org.eclipse.gmf.runtime.diagram.ui.resources.editor.internal.l10n.EditorMessages; import org.eclipse.gmf.runtime.diagram.ui.resources.editor.internal.palette.EditorInputPaletteContent; @@ -78,6 +78,7 @@ import org.eclipse.ui.IPartService; import org.eclipse.ui.IReusableEditor; import org.eclipse.ui.IWindowListener; +import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartSite; import org.eclipse.ui.IWorkbenchWindow; @@ -495,13 +496,27 @@ enableSanityChecking(false); - Display display= getSite().getShell().getDisplay(); - display.asyncExec(new Runnable() { - public void run() { - if (getGraphicalViewer() != null) - getSite().getPage().closeEditor(DiagramDocumentEditor.this, save); - } - }); + Display display = Display.getCurrent(); + if (display == null) { + display = PlatformUI.getWorkbench().getDisplay(); + } + if (!display.isDisposed()) { + display.asyncExec(new Runnable() { + public void run() { + if (getGraphicalViewer() != null) { + if (!PlatformUI.getWorkbench().isClosing()) { + IWorkbenchPartSite site = getSite(); + if (site != null) { + IWorkbenchPage page = site.getPage(); + if (page != null) { + page.closeEditor(DiagramDocumentEditor.this, save); + } + } + } + } + } + }); + } } /**