sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject [sis] branch master updated: Fix a NullPointerException when transforming coordinates with SpecializableTransform.transform(…) methods working on arrays and the last coordinates are inside a sub-grid. (Cherry-pick from d92bcd3d94d6ebcd54d7703a41785b5bdef7023a)
Date Thu, 06 Aug 2020 17:29:01 GMT
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
     new 1a2b75e  Fix a NullPointerException when transforming coordinates with SpecializableTransform.transform(…)
methods working on arrays and the last coordinates are inside a sub-grid. (Cherry-pick from
d92bcd3d94d6ebcd54d7703a41785b5bdef7023a)
1a2b75e is described below

commit 1a2b75ed009f9512b10bda82b974ed28b5c962ed
Author: Martin Desruisseaux <martin.desruisseaux@geomatys.com>
AuthorDate: Thu Aug 6 19:25:19 2020 +0200

    Fix a NullPointerException when transforming coordinates with SpecializableTransform.transform(…)
methods working on arrays and the last coordinates are inside a sub-grid.
    (Cherry-pick from d92bcd3d94d6ebcd54d7703a41785b5bdef7023a)
---
 .../operation/transform/SpecializableTransform.java        | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SpecializableTransform.java
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SpecializableTransform.java
index d86fa95..9ebc610 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SpecializableTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/SpecializableTransform.java
@@ -648,24 +648,24 @@ class SpecializableTransform extends AbstractMathTransform implements
Serializab
             while (numPts > 0) {
                 SubArea domain = forward.locate(dst);
                 if (domain == null) {
-                    dst.offset += dstInc;
+                    dst.offset += dstInc;                           // Skip point for which
there is no specialized transform.
                     numPts--;
                     continue;
                 }
                 do {
-                    RTreeNode next = domain;                        // Contains the specialized
transform to use.
-                    int num = (dst.offset - dstOff) / dstInc;       // Number of points that
are not retransformeD.
-                    srcOff += num * srcInc;                         // Skip the source coordinates
that are not retransformed.
+                    RTreeNode next = domain;                        // The specialized transform
to use in next iteration.
+                    int num = (dst.offset - dstOff) / dstInc;       // Number of points skipped
before this loop.
+                    srcOff += num * srcInc;                         // Make source offset
synchronized with target offset.
                     dstOff = dst.offset;                            // Destination index
of the first coordinate to retransform.
                     do {
                         dst.offset += dstInc;                       // Destination index
after the last coordinate to transform.
                         if (--numPts <= 0) {
-                            domain = null;
+                            next = null;                            // For telling the second
`while` condition to stop.
                             break;
                         }
                         next = RTreeNode.locate(domain, dst);
-                    } while (next == domain);
-                    num = (dst.offset - dstOff) / dstInc;           // Number of points to
retransform.
+                    } while (next == domain);                       // Continue until we
find a change of specialized transform.
+                    num = (dst.offset - dstOff) / dstInc;           // Number of points to
transform.
                     transform.apply(domain.inverse, srcOff, dstOff, num);
                     domain = (SubArea) next;
                     srcOff += srcInc * num;


Mime
View raw message