Ticket #2654: relationeditor-infiniteloop2.diff

File relationeditor-infiniteloop2.diff, 1.8 KB (added by Daeron, 4 years ago)
  • src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java

     
    340340            RelationMember m = em; 
    341341            RelationMember way1 = null; 
    342342            RelationMember way2 = null; 
    343             while (m != null) { 
     343            int depth = 0; 
     344 
     345            while (m != null && depth < 10) { 
    344346                if (m.member instanceof Way) { 
    345347                    way1 = m; 
    346348                    break; 
    347349                } else if (m.member instanceof Relation) { 
     350                    if (m.member == this.relation) 
     351                        break; 
    348352                    m = ((Relation)m.member).lastMember(); 
     353                    depth++; 
    349354                } else { 
    350355                    break; 
    351356                } 
     
    354359                int next = i+1; 
    355360                while (next < clone.members.size()) { 
    356361                    m = clone.members.get(next++); 
    357                     while (m != null) { 
     362                    depth = 0; 
     363                    while (m != null && depth < 10) { 
    358364                        if (m.member instanceof Way) { 
    359365                            way2 = m; 
    360366                            break; 
    361367                        } else if (m.member instanceof Relation) { 
     368                            if (m.member == this.relation) 
     369                                break; 
    362370                            m = ((Relation)(m.member)).firstMember(); 
     371                            depth++; 
    363372                        } else { 
    364373                            break; 
    365374                        }