Mercurial > hg > release > icedtea7-forest-2.5 > jaxp
changeset 1198:13337054d401
8062923: XSL: Run-time internal error in 'substring()'
8062924: XSL: wrong answer from substring() function
Reviewed-by: joehw
author | aefimov |
---|---|
date | Tue, 27 Jan 2015 15:04:56 +0300 |
parents | d3748097ab5b |
children | 4f64b6dc1260 |
files | src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java |
diffstat | 1 files changed, 5 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java Thu Apr 09 16:23:43 2015 +0300 +++ b/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java Tue Jan 27 15:04:56 2015 +0300 @@ -270,8 +270,8 @@ if (Double.isNaN(start)) return(EMPTYSTRING); - final int strlen = value.length(); - int istart = (int)Math.round(start) - 1; + final int strlen = value.length(); + int istart = (int)Math.round(start) - 1; if (istart > strlen) return(EMPTYSTRING); @@ -292,10 +292,11 @@ public static String substringF(String value, double start, double length) { if (Double.isInfinite(start) || Double.isNaN(start) || - Double.isNaN(length)) + Double.isNaN(length) || + length < 0) return(EMPTYSTRING); - int istart = (int)Math.round(start) - 1; + int istart = (int)Math.round(start) - 1; final int isum; if (Double.isInfinite(length)) isum = Integer.MAX_VALUE;