Index: trunk/src/org/openstreetmap/josm/data/validation/tests/LongSegment.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/LongSegment.java	(revision 12031)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/LongSegment.java	(revision 12032)
@@ -5,5 +5,9 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.Node;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
@@ -14,5 +18,5 @@
 
 /**
- * Checks for untagged ways
+ * Checks for very long segments.
  *
  * @since 8320
@@ -24,4 +28,6 @@
     /** Maximum segment length for this test */
     protected int maxlength;
+    /** set of visited ways */
+    private final Set<Way> visitedWays = new HashSet<>();
 
     /**
@@ -34,8 +40,22 @@
 
     @Override
+    public void visit(Node n) {
+        for (Way w : n.getParentWays()) {
+            if (isPrimitiveUsable(w)) {
+                testWay(w);
+            }
+        }
+    }
+
+    @Override
     public void visit(Way w) {
-        if (w.hasTag("route", "ferry")) {
+        testWay(w);
+    }
+
+    private void testWay(Way w) {
+        if (visitedWays.contains(w) || w.hasTag("route", "ferry")) {
             return;
         }
+        visitedWays.add(w);
         Double length = w.getLongestSegmentLength();
         if (length > maxlength) {
@@ -52,9 +72,17 @@
         super.startTest(monitor);
         maxlength = Main.pref.getInteger("validator.maximum.segment.length", 15_000);
+        visitedWays.clear();
+    }
+
+    @Override
+    public void endTest() {
+        visitedWays.clear();
+        super.endTest();
     }
 
     @Override
     public boolean isPrimitiveUsable(OsmPrimitive p) {
-        return p.isUsable() && p instanceof Way && ((Way) p).getNodesCount() > 1; // test only Ways with at least 2 nodes
+        // test only nodes and Ways with at least 2 nodes
+        return p.isUsable() && ((p instanceof Node && p.isDrawable()) || (p instanceof Way && ((Way) p).getNodesCount() > 1));
     }
 }
