diff options
author | aefimov <none@none> | 2015-01-26 22:44:21 +0300 |
---|---|---|
committer | aefimov <none@none> | 2015-01-26 22:44:21 +0300 |
commit | 81353ccdf64431911b9fbb4af1df26e87792b70b (patch) | |
tree | 9cfc4eb79dc5f8b1ae6181334a29261eb261cc5b | |
parent | aad47adee98eccbb16771bd5a9228f3ce21850bc (diff) |
8062923: XSL: Run-time internal error in 'substring()'jdk8u45-b06
8062924: XSL: wrong answer from substring() function
Reviewed-by: joehw
-rw-r--r-- | src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java b/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java index 74acd2a..8d05e9e 100644 --- a/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java +++ b/src/com/sun/org/apache/xalan/internal/xsltc/runtime/BasisLibrary.java @@ -270,8 +270,8 @@ public final class BasisLibrary { 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 final class BasisLibrary { 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; |