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 2022/03/16 10:58:26 UTC
[sis] branch geoapi-4.0 updated: Avoid an ArithmeticException when formatting an infinite value as a date. It does not resolve the problem for high but non-infinite values however.
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
The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
new 6d7a83d Avoid an ArithmeticException when formatting an infinite value as a date. It does not resolve the problem for high but non-infinite values however.
6d7a83d is described below
commit 6d7a83dc182ea659a1b7d7891ce0b96cf753a9b3
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Wed Mar 16 11:57:32 2022 +0100
Avoid an ArithmeticException when formatting an infinite value as a date.
It does not resolve the problem for high but non-infinite values however.
---
.../main/java/org/apache/sis/geometry/CoordinateFormat.java | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java
index 5165fbc..3b56f5e 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java
@@ -1364,6 +1364,7 @@ abort: if (dimensions != 0 && groundAccuracy != null) try {
* @param position the coordinate to format.
* @param toAppendTo where the text is to be appended.
* @throws IOException if an error occurred while writing to the given appendable.
+ * @throws ArithmeticException if a date value exceed the capacity of {@code long} type.
*/
@Override
@SuppressWarnings({"UnnecessaryBoxing", "null"})
@@ -1434,7 +1435,16 @@ abort: if (dimensions != 0 && groundAccuracy != null) try {
case LONGITUDE: valueObject = new Longitude (value); break;
case LATITUDE: valueObject = new Latitude (value); break;
case ANGLE: valueObject = new Angle (value); break;
- case DATE: valueObject = new Date(Math.addExact(Math.round(value), epochs[i])); break;
+ case DATE: {
+ if (Double.isFinite(value)) {
+ valueObject = new Date(Math.addExact(Math.round(value), epochs[i]));
+ } else {
+ if (i != 0) toAppendTo.append(separator);
+ toAppendTo.append(String.valueOf(value));
+ continue;
+ }
+ break;
+ }
}
} else {
valueObject = value;