Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNitin Dahyabhai2018-07-10 04:30:20 +0000
committerNitin Dahyabhai2018-07-10 04:30:20 +0000
commit8bddb0398b5c5baa9a21dff6ebc0d075c5248289 (patch)
tree04911e43ee025ef09b35ff069194ae22eb20cbd3
parent675e1600063b0d8cf0e255faf620242b64c3763c (diff)
downloadwebtools.sourceediting-8bddb0398b5c5baa9a21dff6ebc0d075c5248289.tar.gz
webtools.sourceediting-8bddb0398b5c5baa9a21dff6ebc0d075c5248289.tar.xz
webtools.sourceediting-8bddb0398b5c5baa9a21dff6ebc0d075c5248289.zip
[nobug] guard against Display disposal during editor close
-rwxr-xr-xcore/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java25
1 files changed, 19 insertions, 6 deletions
diff --git a/core/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java b/core/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
index 4616610e1a..36cddb5a6f 100755
--- a/core/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
+++ b/core/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextEditor.java
@@ -129,7 +129,9 @@ import org.eclipse.ui.IPartListener;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IStorageEditorInput;
import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.contexts.IContextService;
@@ -1181,12 +1183,23 @@ public class StructuredTextEditor extends TextEditor {
else {
if (getEditorPart() != null) {
Display display = getSite().getShell().getDisplay();
- display.asyncExec(new Runnable() {
-
- public void run() {
- getSite().getPage().closeEditor(getEditorPart(), save);
- }
- });
+ if (!display.isDisposed()) {
+ display.asyncExec(new Runnable() {
+ /*
+ * There's really no way to tell how much later this
+ * might take place. Be paranoid.
+ */
+ public void run() {
+ IWorkbenchPartSite site = getSite();
+ if (site != null) {
+ IWorkbenchPage page = site.getPage();
+ if (page != null) {
+ page.closeEditor(getEditorPart(), save);
+ }
+ }
+ }
+ });
+ }
}
else {
super.close(save);

Back to the top