Index: /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 1914)
+++ /trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java	(revision 1915)
@@ -59,5 +59,5 @@
         for (Map.Entry<Way, List<Integer>> insertPoint : insertPoints.entrySet()) {
             Way w = insertPoint.getKey();
-            List<Node> nodesToAdd = new ArrayList<Node>();
+            List<Node> nodesToAdd = new ArrayList<Node>(w.getNodes());
             List<Integer> is = insertPoint.getValue();
             pruneSuccsAndReverse(is);
Index: /trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 1914)
+++ /trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 1915)
@@ -39,5 +39,10 @@
      */
     public List<Node> getNodes() {
-        return new CopyList<Node>(nodes.toArray(new Node[nodes.size()]));
+        //return new CopyList<Node>(nodes.toArray(new Node[nodes.size()]));
+        // FIXME: temporary switch back to classic ArrayList due to #3194
+        //
+        ArrayList<Node> ret = new ArrayList<Node>();
+        ret.addAll(nodes);
+        return ret;
     }
 
