You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by lu...@apache.org on 2004/08/11 01:16:09 UTC

cvs commit: jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler ParserController.java Mark.java

luehe       2004/08/10 16:16:09

  Modified:    jasper2/src/share/org/apache/jasper/compiler Tag: TOMCAT_5_0
                        ParserController.java Mark.java
  Log:
  Ported fix for Bugzilla 29971 ("Commented out page directive is parsed")
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.52.2.1  +34 -2     jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ParserController.java
  
  Index: ParserController.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/ParserController.java,v
  retrieving revision 1.52
  retrieving revision 1.52.2.1
  diff -u -r1.52 -r1.52.2.1
  --- ParserController.java	17 Mar 2004 19:23:03 -0000	1.52
  +++ ParserController.java	10 Aug 2004 23:16:08 -0000	1.52.2.1
  @@ -407,13 +407,44 @@
   	String encoding = null;
           String saveEncoding = null;
   
  +        jspReader.reset(startMark);
  +
   	/*
   	 * Determine page encoding from directive of the form <%@ page %> or
   	 * <%@ tag %>
   	 */
  -	jspReader.reset(startMark);
  -	while (jspReader.skipUntil("<%@") != null) {
  +        while (true) {
  +            Mark current = jspReader.mark();
  +
  +            Mark beginDirective = jspReader.skipUntil("<%@");
  +            if (beginDirective == null) {
  +                break;
  +            }
  +            // Move past the '<%@' delimiter
  +            Mark beginDirectiveBody = jspReader.mark();
  +
  +            // Check to see if directive is nested inside comment
  +            jspReader.reset(current);
  +            Mark beginComment = jspReader.skipUntil("<%--");
  +            if (beginComment != null) {
  +                Mark endComment = jspReader.skipUntil("--%>");
  +                if (endComment == null) {
  +                    err.jspError(beginComment, "jsp.error.unterminated",
  +                                 "&lt;%--");
  +                }
  +  
  +                if (beginDirective.isGreater(beginComment)
  +                        && endComment.isGreater(beginDirective)) {
  +                    // Directive is nested inside comment, skip until end of 
  +                    // comment
  +                    jspReader.reset(endComment);
  +                    continue;
  +                }
  +            }
  +
  +            jspReader.reset(beginDirectiveBody);
   	    jspReader.skipSpaces();
  +
   	    // compare for "tag ", so we don't match "taglib"
   	    if (jspReader.matches("tag ") || jspReader.matches("page")) {
   
  @@ -429,6 +460,7 @@
                   }
   	    }
   	}
  +
           if (encoding == null) {
               encoding = saveEncoding;
           }
  
  
  
  1.7.2.1   +16 -0     jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Mark.java
  
  Index: Mark.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Mark.java,v
  retrieving revision 1.7
  retrieving revision 1.7.2.1
  diff -u -r1.7 -r1.7.2.1
  --- Mark.java	12 May 2004 17:45:37 -0000	1.7
  +++ Mark.java	10 Aug 2004 23:16:08 -0000	1.7.2.1
  @@ -227,6 +227,22 @@
   	return false;
       }
   
  +    /**
  +     * @return true if this Mark is greather than the <code>other</code>
  +     * Mark, false otherwise.
  +     */
  +    public boolean isGreater(Mark other) {
  +
  +        boolean greater = false;
  +
  +        if (this.line > other.line) {
  +            greater = true;
  +        } else if (this.line == other.line && this.col > other.col) {
  +            greater = true;
  +        }
  +
  +        return greater;
  +    }
   
       /**
        * Keep track of parser before parsing an included file.
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org