craigmcc    01/07/23 15:04:00

  Modified:    jasper/src/share/org/apache/jasper/compiler JspUtil.java
  Log:
  Fix an as-yet-unfiled bug related to escaping of '\' characters in runtime
  expressions (which was recently patched in response to Bugzilla #2602.
  The previous patch caused this code:
  
    <%= "\u9b5a" %>
  
  to create the (incorrect) Java code:
  
    out.print("\\9b5a");
  
  in the generated servlet.  Now, backslash escaping occurs *only* outside
  the context of a Java string literal, which is assumed to be correctly
  escaped according to the requirements of the Java language.
  
  TODO:  Make sure that this does not break the fix for %\> quoting.
  
  Revision  Changes    Path
  1.11      +6 -4      
jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java
  
  Index: JspUtil.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- JspUtil.java      2001/07/18 23:53:49     1.10
  +++ JspUtil.java      2001/07/23 22:04:00     1.11
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v
 1.10 2001/07/18 23:53:49 horwat Exp $
  - * $Revision: 1.10 $
  - * $Date: 2001/07/18 23:53:49 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v
 1.11 2001/07/23 22:04:00 craigmcc Exp $
  + * $Revision: 1.11 $
  + * $Date: 2001/07/23 22:04:00 $
    *
    * ====================================================================
    * 
  @@ -122,9 +122,11 @@
   
       public static char[] escapeQuotes (char []chars) {
           CharArrayWriter caw = new CharArrayWriter();
  +        boolean inJavaString = false;
           for (int i = 0; i < chars.length; i++) {
  +            if (chars[i] == '"') inJavaString = !inJavaString;
               // escape out the escape character
  -            if (chars[i] == '\\') caw.write('\\');
  +            if (!inJavaString && (chars[i] == '\\')) caw.write('\\');
               caw.write(chars[i]);
           }
           return caw.toCharArray();
  
  
  

Reply via email to