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();