[344723] [parser] StackOverFlowError in erroneous jsp file - destabilizing issue
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
index 2ed137d..09f05df 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
@@ -1,7 +1,7 @@
-/* The following code was generated by JFlex 1.2.2 on 10/17/11 2:40 PM */
+/* The following code was generated by JFlex 1.2.2 on 11/29/12 5:08 PM */
 
 /*******************************************************************************
- * Copyright (c) 2004, 2011 IBM Corporation and others.
+ * Copyright (c) 2004, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,8 +36,8 @@
 /**
  * This class is a scanner generated by 
  * <a href="http://www.informatik.tu-muenchen.de/~kleing/jflex/">JFlex</a> 1.2.2
- * on 10/17/11 2:40 PM from the specification file
- * <tt>file:/Users/dev/workspaces/indigo/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex</tt>
+ * on 11/29/12 5:08 PM from the specification file
+ * <tt>file:/Users/dev/git/wtp/webtools.sourceediting/bundles/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex</tt>
  */
 public class JSPTokenizer implements BlockTokenizer, DOMJSPRegionContexts {
 
@@ -1415,7 +1415,7 @@
 				// Look for a JSP beginning at current-searchStringLength; if so, backup and switch scanner states to handle it.
 				// Ensure that we've not encountered a complete block (<%%>) that was *shorter* than the closeTagString and
 				// thus found twice at current-targetLength [since the first scan would have come out this far anyway].
-				if(checkJSPs && yy_currentPos > searchStringLength && yy_currentPos - searchStringLength != fLastInternalBlockStart && 
+				if(checkJSPs && yy_currentPos > searchStringLength && yy_currentPos - searchStringLength != fLastInternalBlockStart && yy_currentPos - searchStringLength > yy_startRead &&
 					yy_buffer[yy_currentPos - searchStringLength] == '<' && yy_buffer[yy_currentPos - searchStringLength + 1] == '%') {
 					fLastInternalBlockStart = yy_markedPos = yy_currentPos - searchStringLength;
 					yy_currentPos = yy_markedPos + 1;
diff --git a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex
index 0c21b1c..04f9457 100644
--- a/bundles/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex
+++ b/bundles/org.eclipse.wst.sse.core/DevTimeSupport/SedModel/HTMLTokenizer/devel/JSPTokenizer.jflex
@@ -1,5 +1,5 @@
 /*******************************************************************************

- * Copyright (c) 2004, 2011 IBM Corporation and others.

+ * Copyright (c) 2004, 2012 IBM Corporation and others.

  * All rights reserved. This program and the accompanying materials

  * are made available under the terms of the Eclipse Public License v1.0

  * which accompanies this distribution, and is available at

@@ -461,7 +461,7 @@
 				// Look for a JSP beginning at current-searchStringLength; if so, backup and switch scanner states to handle it.

 				// Ensure that we've not encountered a complete block (<%%>) that was *shorter* than the closeTagString and

 				// thus found twice at current-targetLength [since the first scan would have come out this far anyway].

-				if(checkJSPs && yy_currentPos > searchStringLength && yy_currentPos - searchStringLength != fLastInternalBlockStart && 

+				if(checkJSPs && yy_currentPos > searchStringLength && yy_currentPos - searchStringLength != fLastInternalBlockStart && yy_currentPos - searchStringLength > yy_startRead &&

 					yy_buffer[yy_currentPos - searchStringLength] == '<' && yy_buffer[yy_currentPos - searchStringLength + 1] == '%') {

 					fLastInternalBlockStart = yy_markedPos = yy_currentPos - searchStringLength;

 					yy_currentPos = yy_markedPos + 1;