From b00d22a50182510770da557326fa04cf9adec1ba Mon Sep 17 00:00:00 2001 From: Jeroen Bloemscheer Date: Fri, 17 Jul 2026 07:23:18 +0200 Subject: [PATCH] Allocate polyLocator as PointOnGeometryLocator[] for Android ART (#1192) A ternary of IndexedPointInAreaLocator[] vs SimplePointInAreaLocator[] is verified as Object[] by Android ART and fails dex2oat when assigned to PointOnGeometryLocator[]. Locators are created lazily in getLocator(), so allocating the declared interface array type is sufficient and safe. --- .../jts/operation/relateng/RelatePointLocator.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/core/src/main/java/org/locationtech/jts/operation/relateng/RelatePointLocator.java b/modules/core/src/main/java/org/locationtech/jts/operation/relateng/RelatePointLocator.java index c6f63680f0..695f214ef4 100644 --- a/modules/core/src/main/java/org/locationtech/jts/operation/relateng/RelatePointLocator.java +++ b/modules/core/src/main/java/org/locationtech/jts/operation/relateng/RelatePointLocator.java @@ -89,9 +89,9 @@ private void init(Geometry geom) { } if (polygons != null) { - polyLocator = isPrepared - ? new IndexedPointInAreaLocator[polygons.size()] - : new SimplePointInAreaLocator[polygons.size()]; + // Use the declared interface array type so Android ART can verify + // the assignment (concrete-array ternary is Object[] under ART; #1192) + polyLocator = new PointOnGeometryLocator[polygons.size()]; } }