This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit b56244371d9f620c38b45fa64bdcda371077aacb
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Thu Mar 23 21:33:32 2023 +0100

    Use `ArithmeticException` for errors related to an overflow of integer 
capacity.
---
 .../src/main/java/org/apache/sis/coverage/grid/GridCoverageBuilder.java | 2 +-
 .../src/main/java/org/apache/sis/coverage/grid/GridOrientation.java     | 2 +-
 core/sis-feature/src/main/java/org/apache/sis/index/tree/PointTree.java | 2 +-
 .../src/main/java/org/apache/sis/geometry/Envelopes.java                | 2 +-
 core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java  | 2 +-
 core/sis-utility/src/main/java/org/apache/sis/util/ArraysExt.java       | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageBuilder.java
 
b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageBuilder.java
index b45968bde7..eddd5be859 100644
--- 
a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageBuilder.java
+++ 
b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageBuilder.java
@@ -398,7 +398,7 @@ public class GridCoverageBuilder {
     public GridCoverageBuilder flipGridAxis(final int dimension) {
         ArgumentChecks.ensurePositive("dimension", dimension);
         if (dimension >= Long.SIZE) {
-            throw new 
IllegalArgumentException(Errors.format(Errors.Keys.ExcessiveNumberOfDimensions_1,
 dimension + 1));
+            throw new 
ArithmeticException(Errors.format(Errors.Keys.ExcessiveNumberOfDimensions_1, 
dimension + 1));
         }
         flippedAxes ^= (1L << dimension);
         return this;
diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridOrientation.java
 
b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridOrientation.java
index 47b413c395..99e7bea3bf 100644
--- 
a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridOrientation.java
+++ 
b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridOrientation.java
@@ -195,7 +195,7 @@ public final class GridOrientation implements Serializable {
     public GridOrientation flipGridAxis(final int dimension) {
         ArgumentChecks.ensurePositive("dimension", dimension);
         if (dimension >= Long.SIZE) {
-            throw new 
IllegalArgumentException(Errors.format(Errors.Keys.ExcessiveNumberOfDimensions_1,
 dimension + 1));
+            throw new 
ArithmeticException(Errors.format(Errors.Keys.ExcessiveNumberOfDimensions_1, 
dimension + 1));
         }
         return new GridOrientation(flippedAxes ^ (1L << dimension), 
crsVariant, canReorderGridAxis);
     }
diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/index/tree/PointTree.java 
b/core/sis-feature/src/main/java/org/apache/sis/index/tree/PointTree.java
index 9a77fda74e..515996c135 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/index/tree/PointTree.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/index/tree/PointTree.java
@@ -218,7 +218,7 @@ public class PointTree<E> extends AbstractSet<E> implements 
CheckedContainer<E>
         ArgumentChecks.ensureStrictlyPositive("nodeCapacity", nodeCapacity);
         final int n = bounds.getDimension();
         if (n > MAXIMUM_DIMENSIONS) {
-            throw new 
IllegalArgumentException(Errors.format(Errors.Keys.ExcessiveNumberOfDimensions_1,
 n));
+            throw new 
ArithmeticException(Errors.format(Errors.Keys.ExcessiveNumberOfDimensions_1, 
n));
         }
         treeRegion = new double[n*2];
         boolean isValid = (n >= 2);
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java 
b/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
index 5c285b781a..bf2c3f9737 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
@@ -416,7 +416,7 @@ public final class Envelopes extends Static {
          * This coordinate will be updated in the `switch` statement inside 
the `while` loop.
          */
         if (sourceDim >= 20) {          // Maximal value supported by 
Formulas.pow3(int) is 19.
-            throw new 
IllegalArgumentException(Errors.format(Errors.Keys.ExcessiveNumberOfDimensions_1,
 sourceDim));
+            throw new 
ArithmeticException(Errors.format(Errors.Keys.ExcessiveNumberOfDimensions_1, 
sourceDim));
         }
         boolean isDerivativeSupported = true;
         DirectPosition  temporary     = null;
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
index fa26a03e72..f46d4c4e61 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
@@ -1009,7 +1009,7 @@ public final class CRS extends Static {
                 throw new 
IndexOutOfBoundsException(Errors.format(Errors.Keys.IndexOutOfBounds_1, d));
             }
             if (d >= Long.SIZE) {
-                throw new 
IllegalArgumentException(Errors.format(Errors.Keys.ExcessiveNumberOfDimensions_1,
 d+1));
+                throw new 
ArithmeticException(Errors.format(Errors.Keys.ExcessiveNumberOfDimensions_1, 
d+1));
             }
             selected |= (1L << d);
         }
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/ArraysExt.java 
b/core/sis-utility/src/main/java/org/apache/sis/util/ArraysExt.java
index be151421cb..4c072de282 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/ArraysExt.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/ArraysExt.java
@@ -2253,7 +2253,7 @@ public final class ArraysExt extends Static {
     public static int[] unionOfSorted(final int[] array1, final int[] array2) {
         if (array1 == null) return array2;
         if (array2 == null) return array1;
-        int[] union = new int[array1.length + array2.length];
+        int[] union = new int[Math.addExact(array1.length, array2.length)];
         int nu=0;
         for (int ix=0, iy=0;;) {
             if (ix == array1.length) {

Reply via email to