Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java	(revision 11885)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculator.java	(revision 11886)
@@ -135,8 +135,8 @@
     private int firstGroupIdx;
     private void makeLoopIfNeeded(final List<WayConnectionType> con, final int i) {
-        boolean loop;
+        boolean loop = false;
         if (i == firstGroupIdx) { //is primitive loop
             loop = determineDirection(i, FORWARD, i) == FORWARD;
-        } else {
+        } else if (i >= 0) {
             loop = determineDirection(i, con.get(i).direction, firstGroupIdx) == con.get(firstGroupIdx).direction;
         }
Index: /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculatorTest.java
===================================================================
--- /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculatorTest.java	(revision 11885)
+++ /trunk/test/unit/org/openstreetmap/josm/gui/dialogs/relation/sort/WayConnectionTypeCalculatorTest.java	(revision 11886)
@@ -5,4 +5,5 @@
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -97,4 +98,10 @@
 
     @Test
+    public void testEmpty() {
+        String actual = getConnections(wayConnectionTypeCalculator.updateLinks(new ArrayList<>()));
+        Assert.assertEquals("[]", actual);
+    }
+
+    @Test
     public void testGeneric() {
         Relation relation = getRelation("generic");
