Changeset 4053 in josm


Ignore:
Timestamp:
Apr 21, 2011 12:05:17 AM (2 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.