Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 12968)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java	(revision 12969)
@@ -505,4 +505,6 @@
             return false;
 
+        sourceWays.removeIf(w -> w.isIncomplete() || w.getNodesCount() == 0);
+
         if (!sourceWays.contains(referenceSegment.way)) {
             clearSourceWays();
Index: trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWays.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWays.java	(revision 12968)
+++ trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWays.java	(revision 12969)
@@ -44,5 +44,5 @@
      */
     public ParallelWays(Collection<Way> sourceWays, boolean copyTags, int refWayIndex) {
-        // Possible/sensible to use PrimetiveDeepCopy here?
+        // Possible/sensible to use PrimitiveDeepCopy here?
 
         // Make a deep copy of the ways, keeping the copied ways connected
@@ -50,10 +50,6 @@
         Map<Node, Node> splitNodeMap = new HashMap<>(sourceWays.size());
         for (Way w : sourceWays) {
-            if (!splitNodeMap.containsKey(w.firstNode())) {
-                splitNodeMap.put(w.firstNode(), copyNode(w.firstNode(), copyTags));
-            }
-            if (!splitNodeMap.containsKey(w.lastNode())) {
-                splitNodeMap.put(w.lastNode(), copyNode(w.lastNode(), copyTags));
-            }
+            copyNodeInMap(splitNodeMap, w.firstNode(), copyTags);
+            copyNodeInMap(splitNodeMap, w.lastNode(), copyTags);
         }
         ways = new ArrayList<>(sourceWays.size());
@@ -125,4 +121,10 @@
     }
 
+    private static void copyNodeInMap(Map<Node, Node> splitNodeMap, Node node, boolean copyTags) {
+        if (!splitNodeMap.containsKey(node)) {
+            splitNodeMap.put(node, copyNode(node, copyTags));
+        }
+    }
+
     /**
      * Determines if the nodes graph form a closed path
