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/25 16:12:59 UTC

svn commit: r1590036 - in /tomcat/tc7.0.x/trunk: java/org/apache/catalina/startup/TldConfig.java webapps/docs/changelog.xml

Author: markt
Date: Fri Apr 25 14:12:59 2014
New Revision: 1590036

URL: http://svn.apache.org/r1590036
Log:
Ensure TLD parser obtained from cache has correct value of blockExternal

Modified:
    tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java?rev=1590036&r1=1590035&r2=1590036&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/TldConfig.java Fri Apr 25 14:12:59 2014
@@ -79,7 +79,7 @@ public final class TldConfig  implements
     /**
      * The <code>Digester</code>s available to process tld files.
      */
-    private static Digester[] tldDigesters = new Digester[2];
+    private static Digester[] tldDigesters = new Digester[4];
 
     /**
      * Create (if necessary) and return a Digester configured to process the
@@ -89,20 +89,34 @@ public final class TldConfig  implements
             boolean blockExternal) {
         
         Digester digester = null;
-        if (!validation) {
+        if (!validation && !blockExternal) {
             if (tldDigesters[0] == null) {
                 tldDigesters[0] = DigesterFactory.newDigester(validation,
                         true, new TldRuleSet(), blockExternal);
                 tldDigesters[0].getParser();
             }
             digester = tldDigesters[0];
-        } else {
+        } else if (!validation && blockExternal) {
             if (tldDigesters[1] == null) {
                 tldDigesters[1] = DigesterFactory.newDigester(validation,
                         true, new TldRuleSet(), blockExternal);
                 tldDigesters[1].getParser();
             }
             digester = tldDigesters[1];
+        } else if (validation && !blockExternal) {
+            if (tldDigesters[2] == null) {
+                tldDigesters[2] = DigesterFactory.newDigester(validation,
+                        true, new TldRuleSet(), blockExternal);
+                tldDigesters[2].getParser();
+            }
+            digester = tldDigesters[2];
+        } else {
+            if (tldDigesters[3] == null) {
+                tldDigesters[3] = DigesterFactory.newDigester(validation,
+                        true, new TldRuleSet(), blockExternal);
+                tldDigesters[3].getParser();
+            }
+            digester = tldDigesters[3];
         }
         return digester;
     }

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=1590036&r1=1590035&r2=1590036&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Fri Apr 25 14:12:59 2014
@@ -121,6 +121,10 @@
         additional locations where, theoretically, a memory leak could occur.
         (markt)
       </add>
+      <fix>
+        Ensure that a TLD parser obtained from the cache has the correct value
+        of <code>blockExternal</code>. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">



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