You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2012/08/24 00:12:06 UTC
svn commit: r1376727 -
/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyOperation.java
Author: prestonc
Date: Thu Aug 23 22:12:05 2012
New Revision: 1376727
URL: http://svn.apache.org/viewvc?rev=1376727&view=rev
Log:
Updated the overflow condition for decimal.
Modified:
incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyOperation.java
Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyOperation.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyOperation.java?rev=1376727&r1=1376726&r2=1376727&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyOperation.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/MultiplyOperation.java Thu Aug 23 22:12:05 2012
@@ -64,14 +64,14 @@ public class MultiplyOperation extends A
long value2 = decp2.getDecimalValue();
byte place1 = decp1.getDecimalPlace();
byte place2 = decp2.getDecimalPlace();
- if (value1 > Long.MAX_VALUE / value2) {
+ if (Math.abs(value1) > Long.MAX_VALUE / Math.abs(value2)) {
throw new SystemException(ErrorCode.XPDY0002);
}
value1 *= value2;
place1 += place2;
dOut.write(ValueTag.XS_DECIMAL_TAG);
dOut.writeByte(place1);
- dOut.writeDouble(value1);
+ dOut.writeLong(value1);
}
@Override
@@ -378,7 +378,7 @@ public class MultiplyOperation extends A
byte place1 = decp1.getDecimalPlace();
byte place2 = decp2.getDecimalPlace();
// Divide
- if (value1 > Long.MAX_VALUE / value2) {
+ if (Math.abs(value1) > Long.MAX_VALUE / Math.abs(value2)) {
throw new SystemException(ErrorCode.XPDY0002);
}
value1 *= value2;