Ticket #2654: relationeditor-infiniteloop2.diff

File relationeditor-infiniteloop2.diff, 1.8 KB (added by Daeron, 17 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                        }