From 76658a93f2f41ea93575501ef78c2ea8ee3ce58d Mon Sep 17 00:00:00 2001 From: markt Date: Thu, 23 Jun 2011 09:26:10 +0000 Subject: [PATCH] Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51395 Better fix for memory leak that aligns ContextConfig with TldConfig git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1138788 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/catalina/startup/ContextConfig.java | 13 +++++++++++-- java/org/apache/catalina/startup/TldConfig.java | 4 ++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/java/org/apache/catalina/startup/ContextConfig.java b/java/org/apache/catalina/startup/ContextConfig.java index 7990d1864..4f3a10450 100644 --- a/java/org/apache/catalina/startup/ContextConfig.java +++ b/java/org/apache/catalina/startup/ContextConfig.java @@ -484,6 +484,8 @@ public class ContextConfig namespaceAware, webRuleSet); webFragmentDigesters[0] = DigesterFactory.newDigester(validation, namespaceAware, webFragmentRuleSet); + webDigesters[0].getParser(); + webFragmentDigesters[0].getParser(); } webDigester = webDigesters[0]; webFragmentDigester = webFragmentDigesters[0]; @@ -494,6 +496,8 @@ public class ContextConfig namespaceAware, webRuleSet); webFragmentDigesters[1] = DigesterFactory.newDigester(validation, namespaceAware, webFragmentRuleSet); + webDigesters[1].getParser(); + webFragmentDigesters[1].getParser(); } webDigester = webDigesters[1]; webFragmentDigester = webFragmentDigesters[1]; @@ -504,6 +508,8 @@ public class ContextConfig namespaceAware, webRuleSet); webFragmentDigesters[2] = DigesterFactory.newDigester(validation, namespaceAware, webFragmentRuleSet); + webDigesters[2].getParser(); + webFragmentDigesters[2].getParser(); } webDigester = webDigesters[2]; webFragmentDigester = webFragmentDigesters[2]; @@ -514,6 +520,8 @@ public class ContextConfig namespaceAware, webRuleSet); webFragmentDigesters[3] = DigesterFactory.newDigester(validation, namespaceAware, webFragmentRuleSet); + webDigesters[3].getParser(); + webFragmentDigesters[3].getParser(); } webDigester = webDigesters[3]; webFragmentDigester = webFragmentDigesters[3]; @@ -842,6 +850,9 @@ public class ContextConfig contextConfig(); + createWebXmlDigester(context.getXmlNamespaceAware(), + context.getXmlValidation()); + try { fixDocBase(); } catch (IOException e) { @@ -878,8 +889,6 @@ public class ContextConfig Boolean.valueOf(context.getXmlNamespaceAware()))); } - createWebXmlDigester(context.getXmlNamespaceAware(), context.getXmlValidation()); - webConfig(); if (!context.getIgnoreAnnotations()) { diff --git a/java/org/apache/catalina/startup/TldConfig.java b/java/org/apache/catalina/startup/TldConfig.java index 5597c659c..b05f48cf7 100644 --- a/java/org/apache/catalina/startup/TldConfig.java +++ b/java/org/apache/catalina/startup/TldConfig.java @@ -90,24 +90,28 @@ public final class TldConfig implements LifecycleListener { if (tldDigesters[0] == null) { tldDigesters[0] = DigesterFactory.newDigester(validation, namespaceAware, new TldRuleSet()); + tldDigesters[0].getParser(); } digester = tldDigesters[0]; } else if (!namespaceAware && validation) { if (tldDigesters[1] == null) { tldDigesters[1] = DigesterFactory.newDigester(validation, namespaceAware, new TldRuleSet()); + tldDigesters[1].getParser(); } digester = tldDigesters[1]; } else if (namespaceAware && !validation) { if (tldDigesters[2] == null) { tldDigesters[2] = DigesterFactory.newDigester(validation, namespaceAware, new TldRuleSet()); + tldDigesters[2].getParser(); } digester = tldDigesters[2]; } else { if (tldDigesters[3] == null) { tldDigesters[3] = DigesterFactory.newDigester(validation, namespaceAware, new TldRuleSet()); + tldDigesters[3].getParser(); } digester = tldDigesters[3]; } -- 2.11.0