Bug 577171 - Exception processing async thread queue

Change-Id: I3b5a921c2ad9c5bfaef7449242880517884fafd7
Reviewed-on: https://git.eclipse.org/r/c/jdt/eclipse.jdt.debug/+/187576
Tested-by: JDT Bot <jdt-bot@eclipse.org>
Tested-by: Sarika Sinha <sarika.sinha@in.ibm.com>
Reviewed-by: Sarika Sinha <sarika.sinha@in.ibm.com>
diff --git a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java
index 26e65b9..4f6bbb4 100644
--- a/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java
+++ b/org.eclipse.jdt.debug/eval/org/eclipse/jdt/internal/debug/eval/ast/engine/EvaluationSourceGenerator.java
@@ -149,13 +149,15 @@
 			wordBuffer.append(codeSnippet.charAt(i));
 		}
 		// add semicolon at the end if missing
-		if (chars[chars.length -1] !=';' && chars[chars.length -1] !='}') {
-			wordBuffer.append(';');
-		} else if (chars[chars.length -1] !=';' && chars[chars.length -1] =='}'){
-			int j = lastSentence.lastIndexOf('=') ;
-			int k = lastSentence.lastIndexOf("==") ; //$NON-NLS-1$
-			if (j != -1 && (j != k)) {
+		if (chars.length > 0) {
+			if (chars[chars.length - 1] != ';' && chars[chars.length - 1] != '}') {
 				wordBuffer.append(';');
+			} else if (chars[chars.length - 1] != ';' && chars[chars.length - 1] == '}') {
+				int j = lastSentence.lastIndexOf('=');
+				int k = lastSentence.lastIndexOf("=="); //$NON-NLS-1$
+				if (j != -1 && (j != k)) {
+					wordBuffer.append(';');
+				}
 			}
 		}