bug 41961 - NPE when displaying the result of an expression
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/DisplayAction.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/DisplayAction.java
index 8a442be..3f1fa12 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/DisplayAction.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/DisplayAction.java
@@ -33,7 +33,21 @@
/**
* @see EvaluateAction#displayResult(IEvaluationResult)
*/
- protected void displayResult(IEvaluationResult evaluationResult) {
+ protected void displayResult(final IEvaluationResult evaluationResult) {
+ if (evaluationResult.hasErrors()) {
+ final Display display = JDIDebugUIPlugin.getStandardDisplay();
+ display.asyncExec(new Runnable() {
+ public void run() {
+ if (display.isDisposed()) {
+ return;
+ }
+ reportErrors(evaluationResult);
+ evaluationCleanup();
+ }
+ });
+ return;
+ }
+
final String snippet= evaluationResult.getSnippet();
IJavaValue resultValue= evaluationResult.getValue();
try {
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ExecuteAction.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ExecuteAction.java
index 1b40846..76bff7d 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ExecuteAction.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ExecuteAction.java
@@ -12,8 +12,10 @@
import org.eclipse.jdt.debug.eval.IEvaluationResult;
+import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin;
import org.eclipse.jdt.internal.debug.ui.display.IDataDisplay;
import org.eclipse.jdt.internal.debug.ui.snippeteditor.JavaSnippetEditor;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IWorkbenchPart;
public class ExecuteAction extends EvaluateAction {
@@ -21,7 +23,19 @@
/**
* @see org.eclipse.jdt.internal.debug.ui.actions.EvaluateAction#displayResult(org.eclipse.jdt.debug.eval.IEvaluationResult)
*/
- protected void displayResult(IEvaluationResult result) {
+ protected void displayResult(final IEvaluationResult result) {
+ if (result.hasErrors()) {
+ final Display display = JDIDebugUIPlugin.getStandardDisplay();
+ display.asyncExec(new Runnable() {
+ public void run() {
+ if (display.isDisposed()) {
+ return;
+ }
+ reportErrors(result);
+ evaluationCleanup();
+ }
+ });
+ }
}
/**