aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraefimov <none@none>2015-01-26 22:44:21 +0300
committeraefimov <none@none>2015-01-26 22:44:21 +0300
commit81353ccdf64431911b9fbb4af1df26e87792b70b (patch)
tree9cfc4eb79dc5f8b1ae6181334a29261eb261cc5b
parentaad47adee98eccbb16771bd5a9228f3ce21850bc (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.java9
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;