Changeset 19446 in josm for trunk/test/unit


Ignore:
Timestamp:
2025-11-13T08:25:40+01:00 (6 weeks ago)
Author:
GerdP
Message:

fix #24485: DataIntegrityProblemException: Primitive cannot be modified in read-only dataset

  • create copies of nodes before adding them to a temporary way. This should also fix a memory leak.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/tools/GeometryTest.java

    r19336 r19446  
    3737import org.openstreetmap.josm.data.osm.RelationMember;
    3838import org.openstreetmap.josm.data.osm.Way;
     39import org.openstreetmap.josm.data.osm.WaySegment;
    3940import org.openstreetmap.josm.data.osm.search.SearchCompiler;
    4041import org.openstreetmap.josm.data.projection.Projection;
     
    636637        assertTrue(new EastNorth(0, 0).equalsEpsilon(centroid3, 1e-9));
    637638    }
     639
     640    /**
     641     * A non-regression test for an issue found in #24485
     642     * Test of {@link Geometry#getClosestWaySegment} method when DataSet is read-only.
     643     */
     644    @Test
     645    void testNonRegression24485() {
     646        Node node1 = new Node(new LatLon(0, 0));
     647        Node node2 = new Node(new LatLon(0, 1));
     648        Node node3 = new Node(new LatLon(0.3, 0.5));
     649        Node node4 = new Node(new LatLon(0.1, 0));
     650        Way way1 = TestUtils.newWay("", node1, node2, node3, node4);
     651
     652        DataSet ds = new DataSet();
     653        way1.getNodes().forEach(n -> ds.addPrimitive(n));
     654        ds.addPrimitive(way1);
     655        ds.lock();
     656        WaySegment closestSegment = Geometry.getClosestWaySegment(way1, new Node(new LatLon(0, 0.5)));
     657        ds.unlock();
     658        Way closestSegmentWay = closestSegment.toWay();
     659        assertTrue(closestSegmentWay.containsNode(node1));
     660        assertTrue(closestSegmentWay.containsNode(node2));
     661    }
     662
    638663}
Note: See TracChangeset for help on using the changeset viewer.