Changeset 17283 in josm


Ignore:
Timestamp:
2020-10-29T17:56:01+01:00 (5 weeks ago)
Author:
GerdP
Message:

fix #19438: DataIntegrityProblemException: Deleted node referenced during conflict solving

  • use Way.calculateRemoveNodes() if way is not incomplete
Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/DataSet.java

    r17191 r17283  
    792792            Set<Way> result = new HashSet<>();
    793793            for (Way way : node.getParentWays()) {
    794                 List<Node> wayNodes = way.getNodes();
    795                 if (wayNodes.removeIf(node::equals)) {
     794                List<Node> wayNodes;
     795                if (!way.isIncomplete()) {
     796                    wayNodes = way.calculateRemoveNodes(Collections.singleton(node));
     797                } else {
     798                    wayNodes = way.getNodes();
     799                    wayNodes.removeIf(node::equals);
     800                }
     801                if (wayNodes.size() < way.getNodesCount()) {
    796802                    if (wayNodes.size() < 2) {
    797803                        deleteWay(way);
  • trunk/test/unit/org/openstreetmap/josm/data/osm/DataSetTest.java

    r17275 r17283  
    1212
    1313import org.junit.Assert;
     14import org.junit.jupiter.api.Test;
    1415import org.junit.jupiter.api.extension.RegisterExtension;
    15 import org.junit.jupiter.api.Test;
    1616import org.openstreetmap.josm.TestUtils;
    1717import org.openstreetmap.josm.data.Bounds;
     
    168168        Node n2 = new Node(2);
    169169        Node n3 = new Node(3);
     170        Node n4 = new Node(4);
    170171        Way w1 = new Way(1);
    171         w1.setNodes(Arrays.asList(n1, n2, n3, n1));
     172        w1.setNodes(Arrays.asList(n1, n2, n3, n4, n1));
     173        w1.setIncomplete(false);
     174        assertEquals(5, w1.getNodesCount());
     175        assertTrue(w1.isClosed());
    172176        ds.addPrimitive(n1);
    173177        ds.addPrimitive(n2);
    174178        ds.addPrimitive(n3);
     179        ds.addPrimitive(n4);
    175180        ds.addPrimitive(w1);
    176181        ds.unlinkNodeFromWays(n1);
    177         assertEquals(2, w1.getRealNodesCount());
     182        assertTrue(w1.isClosed());
     183        assertEquals(4, w1.getNodesCount());
    178184    }
    179185
Note: See TracChangeset for help on using the changeset viewer.