sbailliez 2004/02/05 14:45:51 Modified: src/etc junit-frames.xsl junit-noframes.xsl Log: PR: 19301 Use xalan extensions to replace strings and avoid a stack overflow when doing deep recursions. Revision Changes Path 1.17 +18 -77 ant/src/etc/junit-frames.xsl Index: junit-frames.xsl =================================================================== RCS file: /home/cvs/ant/src/etc/junit-frames.xsl,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- junit-frames.xsl 31 Jul 2003 19:38:39 -0000 1.16 +++ junit-frames.xsl 5 Feb 2004 22:45:50 -0000 1.17 @@ -1,61 +1,24 @@ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:lxslt="http://xml.apache.org/xslt" xmlns:redirect="org.apache.xalan.lib.Redirect" + xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils" extension-element-prefixes="redirect"> <xsl:output method="html" indent="yes" encoding="US-ASCII"/> <xsl:decimal-format decimal-separator="." grouping-separator=","/> <!-- - The Apache Software License, Version 1.1 + Copyright 2001-2004 Apache Software Foundation - Copyright (c) 2001-2003 The Apache Software Foundation. All rights - reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. The end-user documentation included with the redistribution, if - any, must include the following acknowlegement: - "This product includes software developed by the - Apache Software Foundation (http://www.apache.org/)." - Alternately, this acknowlegement may appear in the software itself, - if and wherever such third-party acknowlegements normally appear. - - 4. The names "Ant" and "Apache Software - Foundation" must not be used to endorse or promote products derived - from this software without prior written permission. For written - permission, please contact [EMAIL PROTECTED] - - 5. Products derived from this software may not be called "Apache" - nor may "Apache" appear in their names without prior written - permission of the Apache Group. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - ==================================================================== - - This software consists of voluntary contributions made by many - individuals on behalf of the Apache Software Foundation. For more - information on the Apache Software Foundation, please see - <http://www.apache.org/>. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. --> <!-- @@ -724,21 +687,9 @@ <xsl:template name="JS-escape"> <xsl:param name="string"/> - <xsl:choose> - <xsl:when test="contains($string,"'")"> - <xsl:value-of select="substring-before($string,"'")"/>\'<xsl:call-template name="JS-escape"> - <xsl:with-param name="string" select="substring-after($string,"'")"/> - </xsl:call-template> - </xsl:when> - <xsl:when test="contains($string,'\')"> - <xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape"> - <xsl:with-param name="string" select="substring-after($string,'\')"/> - </xsl:call-template> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$string"/> - </xsl:otherwise> - </xsl:choose> + <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/> + <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),"'","\'")"/> + <xsl:value-of select="$tmp2"/> </xsl:template> @@ -748,18 +699,8 @@ --> <xsl:template name="br-replace"> <xsl:param name="word"/> - <xsl:choose> - <xsl:when test="contains($word,'
')"> - <xsl:value-of select="substring-before($word,'
')"/> - <br/> - <xsl:call-template name="br-replace"> - <xsl:with-param name="word" select="substring-after($word,'
')"/> - </xsl:call-template> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$word"/> - </xsl:otherwise> - </xsl:choose> + <xsl:param name="br"><br/></xsl:param> + <xsl:value-of select='stringutils:replace(string($word),"
",$br)'/> </xsl:template> <xsl:template name="display-time"> 1.11 +20 -78 ant/src/etc/junit-noframes.xsl Index: junit-noframes.xsl =================================================================== RCS file: /home/cvs/ant/src/etc/junit-noframes.xsl,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- junit-noframes.xsl 10 Feb 2003 14:13:28 -0000 1.10 +++ junit-noframes.xsl 5 Feb 2004 22:45:50 -0000 1.11 @@ -1,59 +1,23 @@ -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" + xmlns:lxslt="http://xml.apache.org/xslt" + xmlns:stringutils="xalan://org.apache.tools.ant.util.StringUtils"> <xsl:output method="html" indent="yes" encoding="US-ASCII" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" /> <xsl:decimal-format decimal-separator="." grouping-separator="," /> <!-- - The Apache Software License, Version 1.1 + Copyright 2001-2004 Apache Software Foundation - Copyright (c) 2001-2002 The Apache Software Foundation. All rights - reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - - 3. The end-user documentation included with the redistribution, if - any, must include the following acknowlegement: - "This product includes software developed by the - Apache Software Foundation (http://www.apache.org/)." - Alternately, this acknowlegement may appear in the software itself, - if and wherever such third-party acknowlegements normally appear. - - 4. The names "Ant" and "Apache Software - Foundation" must not be used to endorse or promote products derived - from this software without prior written permission. For written - permission, please contact [EMAIL PROTECTED] - - 5. Products derived from this software may not be called "Apache" - nor may "Apache" appear in their names without prior written - permission of the Apache Group. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR - ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - ==================================================================== - - This software consists of voluntary contributions made by many - individuals on behalf of the Apache Software Foundation. For more - information on the Apache Software Foundation, please see - <http://www.apache.org/>. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. --> <!-- @@ -467,21 +431,9 @@ <xsl:template name="JS-escape"> <xsl:param name="string"/> - <xsl:choose> - <xsl:when test="contains($string,"'")"> - <xsl:value-of select="substring-before($string,"'")"/>\'<xsl:call-template name="JS-escape"> - <xsl:with-param name="string" select="substring-after($string,"'")"/> - </xsl:call-template> - </xsl:when> - <xsl:when test="contains($string,'\')"> - <xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape"> - <xsl:with-param name="string" select="substring-after($string,'\')"/> - </xsl:call-template> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$string"/> - </xsl:otherwise> - </xsl:choose> + <xsl:param name="tmp1" select="stringutils:replace(string($string),'\','\\')"/> + <xsl:param name="tmp2" select="stringutils:replace(string($tmp1),"'","\'")"/> + <xsl:value-of select="$tmp2"/> </xsl:template> @@ -491,18 +443,8 @@ --> <xsl:template name="br-replace"> <xsl:param name="word"/> - <xsl:choose> - <xsl:when test="contains($word,'
')"> - <xsl:value-of select="substring-before($word,'
')"/> - <br/> - <xsl:call-template name="br-replace"> - <xsl:with-param name="word" select="substring-after($word,'
')"/> - </xsl:call-template> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$word"/> - </xsl:otherwise> - </xsl:choose> + <xsl:param name="br"><br/></xsl:param> + <xsl:value-of select='stringutils:replace(string($word),"
",$br)'/> </xsl:template> <xsl:template name="display-time">
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]