Index: src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java	(revision 15353)
+++ src/org/openstreetmap/josm/data/validation/tests/UnconnectedWays.java	(working copy)
@@ -445,15 +445,24 @@
                 visited.add(node);
                 for (final Way way : node.getParentWays()) {
                     if (isCandidate(way)) {
-                        List<Node> nextNodes = new ArrayList<>();
                         int pos = way.getNodes().indexOf(node);
+                        Node[] nextNodes = {null, null};
                         if (pos > 0) {
-                            nextNodes.add(way.getNode(pos - 1));
+                            int i = 1;
+                            while (pos - i >= 0 && (nextNodes[0] == null || !nextNodes[0].isLatLonKnown())) {
+                                nextNodes[0] = way.getNode(pos - i);
+                                i++;
+                            }
                         }
                         if (pos + 1 < way.getNodesCount()) {
-                            nextNodes.add(way.getNode(pos + 1));
+                            int i = 1;
+                            while (pos + i < way.getNodesCount() - 1 && (nextNodes[1] == null || !nextNodes[1].isLatLonKnown())) {
+                                nextNodes[1] = way.getNode(pos + i);
+                                i++;
+                            }
                         }
                         for (Node next : nextNodes) {
+                            if (next == null || !next.isLatLonKnown()) continue;
                             final boolean containsN = visited.contains(next);
                             visited.add(next);
                             if (!containsN && isConnectedTo(next, way, visited,
