You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2021/10/28 11:25:02 UTC
[sis] 02/04: Fix an `IndexOutOfBoundsException`.
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 6cd70ce240ac7a61eaf218024c103d53f580abea
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Thu Oct 28 12:52:50 2021 +0200
Fix an `IndexOutOfBoundsException`.
---
.../src/main/java/org/apache/sis/coverage/grid/GridDerivation.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridDerivation.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridDerivation.java
index 35f1893..bb33976 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridDerivation.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridDerivation.java
@@ -120,6 +120,7 @@ public class GridDerivation {
/**
* If the grid is divided in tiles or chunks, the size of the chunks.
* This is used for snapping grid size to multiple values of chunk size.
+ * If non-null, can not be empty. Trailing 1 values are omitted.
*
* @see #chunkSize(int...)
*/
@@ -678,7 +679,7 @@ public class GridDerivation {
if (s > 1) { // Also for skipping NaN values.
scaled = true;
final int i = (modifiedDimensions != null) ? modifiedDimensions[k] : k;
- if (chunkSize != null) {
+ if (chunkSize != null && i < chunkSize.length && chunkSize[i] != 1) {
s = roundSubsampling(s, i); // Include clamp to `maximumSubsampling`.
} else {
final int accuracy = Math.max(0, Math.getExponent(indices.getSpan(i))) + 1; // Power of 2.
@@ -1260,7 +1261,7 @@ public class GridDerivation {
if (subsampling <= 1) {
return 1;
}
- if (chunkSize != null) {
+ if (chunkSize != null && dimension < chunkSize.length) {
/*
* If the coverage is divided in tiles (or "chunk" in n-dimensional case), we want the subsampling
* to be a divisor of tile size. In the special case where the subsampling is larger than tile size,