Index: trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 8989)
+++ trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java	(revision 8990)
@@ -48,5 +48,4 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Shortcut;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
@@ -248,12 +247,13 @@
                 public void valueChanged(ListSelectionEvent e) {
                     final Way selected = list.getSelectedValue();
-                    if (Main.isDisplayingMapView() && selected != null) {
-                        final List<WaySegment> segments = Utils.transform(selected.getNodes().subList(0, selected.getNodesCount() - 1),
-                                new Utils.Function<Node, WaySegment>() {
-                            @Override
-                            public WaySegment apply(Node x) {
-                                return new WaySegment(selectedWay, selectedWay.getNodes().indexOf(x));
-                            }
-                        });
+                    if (Main.isDisplayingMapView() && selected != null && selected.getNodesCount() > 1) {
+                        final Collection<WaySegment> segments = new ArrayList<>(selected.getNodesCount() - 1);
+                        final Iterator<Node> it = selected.getNodes().iterator();
+                        Node previousNode = it.next();
+                        while (it.hasNext()) {
+                            final Node node = it.next();
+                            segments.add(WaySegment.forNodePair(selectedWay, previousNode, node));
+                            previousNode = node;
+                        }
                         setHighlightedWaySegments(segments);
                     }
Index: trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java	(revision 8989)
+++ trunk/src/org/openstreetmap/josm/data/osm/WaySegment.java	(revision 8990)
@@ -44,4 +44,20 @@
     public Node getSecondNode() {
         return way.getNode(lowerIndex + 1);
+    }
+
+    /**
+     * Determines and returns the way segment for the given way and node pair.
+     * @throws IllegalArgumentException if the node pair is not part of way
+     */
+    public static WaySegment forNodePair(Way way, Node first, Node second) {
+        int endIndex = way.getNodesCount() - 1;
+        while (endIndex > 0) {
+            final int indexOfFirst = way.getNodes().subList(0, endIndex).lastIndexOf(first);
+            if (second.equals(way.getNode(indexOfFirst + 1))) {
+                return new WaySegment(way, indexOfFirst);
+            }
+            endIndex--;
+        }
+        throw new IllegalArgumentException("Node pair is not part of way!");
     }
 
