You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/04/29 01:22:50 UTC

svn commit: r1590838 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/el/parser/AstLiteralExpression.java test/org/apache/el/TestELEvaluation.java webapps/docs/changelog.xml

Author: markt
Date: Mon Apr 28 23:22:49 2014
New Revision: 1590838

URL: http://svn.apache.org/r1590838
Log: (empty)

Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/el/parser/AstLiteralExpression.java
    tomcat/tc7.0.x/trunk/test/org/apache/el/TestELEvaluation.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
  Merged /tomcat/trunk:r1590835

Modified: tomcat/tc7.0.x/trunk/java/org/apache/el/parser/AstLiteralExpression.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/el/parser/AstLiteralExpression.java?rev=1590838&r1=1590837&r2=1590838&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/el/parser/AstLiteralExpression.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/el/parser/AstLiteralExpression.java Mon Apr 28 23:22:49 2014
@@ -51,10 +51,9 @@ public final class AstLiteralExpression 
         StringBuilder buf = new StringBuilder(size);
         for (int i = 0; i < size; i++) {
             char c = image.charAt(i);
-            if (c == '\\' && i + 2 < size) {
+            if (c == '\\' && i + 1 < size) {
                 char c1 = image.charAt(i + 1);
-                char c2 = image.charAt(i + 2);
-                if ((c1 == '#' || c1 == '$') && c2 == '{')  {
+                if ((c1 == '#' || c1 == '$'))  {
                     c = c1;
                     i++;
                 }

Modified: tomcat/tc7.0.x/trunk/test/org/apache/el/TestELEvaluation.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/el/TestELEvaluation.java?rev=1590838&r1=1590837&r2=1590838&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/org/apache/el/TestELEvaluation.java (original)
+++ tomcat/tc7.0.x/trunk/test/org/apache/el/TestELEvaluation.java Mon Apr 28 23:22:49 2014
@@ -110,14 +110,21 @@ public class TestELEvaluation {
         assertEquals("\\", evaluateExpression("\\"));
         assertEquals("$", evaluateExpression("$"));
         assertEquals("#", evaluateExpression("#"));
-        assertEquals("\\$", evaluateExpression("\\$"));
-        assertEquals("\\#", evaluateExpression("\\#"));
-        assertEquals("\\\\$", evaluateExpression("\\\\$"));
-        assertEquals("\\\\#", evaluateExpression("\\\\#"));
+        assertEquals("$", evaluateExpression("\\$"));
+        assertEquals("#", evaluateExpression("\\#"));
+        assertEquals("\\$", evaluateExpression("\\\\$"));
+        assertEquals("\\#", evaluateExpression("\\\\#"));
         assertEquals("${", evaluateExpression("\\${"));
         assertEquals("#{", evaluateExpression("\\#{"));
         assertEquals("\\${", evaluateExpression("\\\\${"));
         assertEquals("\\#{", evaluateExpression("\\\\#{"));
+
+        // '\' is only an escape for '$' and '#'.
+        assertEquals("$", evaluateExpression("\\$"));
+        assertEquals("${", evaluateExpression("\\${"));
+        assertEquals("$a", evaluateExpression("\\$a"));
+        assertEquals("\\a", evaluateExpression("\\a"));
+        assertEquals("\\\\", evaluateExpression("\\\\"));
     }
 
     @Test
@@ -195,7 +202,6 @@ public class TestELEvaluation {
         assertNotNull(e);
     }
 
-
     // ************************************************************************
 
     private String evaluateExpression(String expression) {

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1590838&r1=1590837&r2=1590838&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon Apr 28 23:22:49 2014
@@ -158,6 +158,12 @@
         preferred followed by an assignable match followed by a coercible match.
         (markt)
       </fix>
+      <fix>
+        Correct the handling of back-slash escaping in the EL parser and no
+        longer require that <code>\$</code> or <code>\#</code> must be followed
+        by <code>{</code> in order for the back-slash escaping to take effect.
+        (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Cluster">



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