Changeset 4053 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2011-04-21T00:05:17+02:00 (14 years ago)
Author:
stoecker
Message:

fix #6219 - don't create ways containing a double node

File:
1 edited

Legend:

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

    r3943 r4053  
    5858                this.nodes = nodes.toArray(new Node[nodes.size()]);
    5959            }
    60             for (Node node:this.nodes) {
     60            for (Node node: this.nodes) {
    6161                node.addReferrer(this);
    6262            }
     
    6767            writeUnlock(locked);
    6868        }
     69    }
     70
     71    /**
     72     * Prevent directly following identical nodes in ways.
     73     */
     74    private List<Node> removeDouble(List<Node> nodes) {
     75        Node last = null;
     76        int count = nodes.size();
     77        for(int i = 0; i < count && count > 2; ++i) {
     78            Node n = nodes.get(i);
     79            if(last == n) {
     80                nodes.remove(i);
     81                --count;
     82            }
     83            last = n;
     84        }
     85        return nodes;
    6986    }
    7087
     
    278295                copy.remove(i-1);
    279296            }
    280             setNodes(copy);
     297            setNodes(removeDouble(copy));
    281298        } finally {
    282299            writeUnlock(locked);
     
    303320                copy.remove(i-1);
    304321            }
    305             setNodes(copy);
     322            setNodes(removeDouble(copy));
    306323        } finally {
    307324            writeUnlock(locked);
Note: See TracChangeset for help on using the changeset viewer.