Index: src/org/openstreetmap/josm/command/SplitWayCommand.java
===================================================================
--- src/org/openstreetmap/josm/command/SplitWayCommand.java	(revision 16219)
+++ src/org/openstreetmap/josm/command/SplitWayCommand.java	(working copy)
@@ -464,6 +464,7 @@
             numberOfRelations++;
 
             Relation c = null;
+
             String type = Optional.ofNullable(r.get("type")).orElse("");
             // Known types of ordered relations.
             boolean isOrderedRelation = "route".equals(type) || "multipolygon".equals(type) || "boundary".equals(type);
@@ -472,7 +473,7 @@
             int ir = 0;
             List<RelationMember> relationMembers = r.getMembers();
             for (RelationMember rm : relationMembers) {
-                if (rm.isWay() && rm.getMember() == way) {
+                if (rm.getMember() == way) {
                     boolean insert = true;
                     if (relationSpecialTypes.containsKey(type) && "restriction".equals(relationSpecialTypes.get(type))) {
                         RelationInformation rValue = treatAsRestriction(r, rm, c, newWays, way, changedWay);
@@ -492,7 +493,6 @@
                         if (rm.hasRole() && !nowarnroles.contains(rm.getRole())) {
                             warnings.add(WarningType.ROLE);
                         }
-
                         // Attempt to determine the direction the ways in the relation are ordered.
                         Direction direction = Direction.UNKNOWN;
                         if (isOrderedRelation) {
@@ -531,7 +531,6 @@
                                 } else {
                                     nextWayMemberMissing = false;
                                 }
-
                                 if (direction == Direction.UNKNOWN
                                         && !previousWayMemberMissing
                                         && !nextWayMemberMissing) {
@@ -541,6 +540,21 @@
                                     // won't help in any case.
                                     direction = Direction.IRRELEVANT;
                                 }
+                                if (direction == Direction.UNKNOWN) {
+                                    // check if any other complete way in the relation is connected to the way
+                                    // if so, the order of the relation is broken
+                                    for (int i = 0; i < r.getMembersCount(); i++) {
+                                        if (i >= ir - 1 && i <= ir + 1)
+                                            continue;
+                                        RelationMember rmTest = r.getMember(i);
+                                        if (rmTest.isWay() && !rmTest.getMember().isIncomplete() &&
+                                            (way.isFirstLastNode(rmTest.getWay().firstNode())
+                                                    || way.isFirstLastNode(rm.getWay().lastNode()))) {
+                                                direction = Direction.IRRELEVANT;
+                                                break;
+                                        }
+                                    }
+                                }
                             }
                         } else {
                             int k = 1;
