Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java	(revision 5175)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java	(revision 5176)
@@ -221,5 +221,7 @@
                 }
             }
-            poly.closePath();
+            if (!initial) { // fix #7593
+                poly.closePath();
+            }
             for (PolyData inner : inners) {
                 appendInner(inner.poly);
@@ -278,7 +280,7 @@
         }
         
-        private void resetNodes() {
+        private void resetNodes(DataSet dataSet) {
             if (!nodes.isEmpty()) {
-                DataSet ds = null;
+                DataSet ds = dataSet;
                 // Find DataSet (can be null for several nodes when undoing nodes creation, see #7162)
                 for (Iterator<Node> it = nodes.iterator(); it.hasNext() && ds == null; ) {
@@ -331,10 +333,10 @@
             for (PolyData inner : inners) {
                 if (inner.wayIds.contains(wayId)) {
-                    inner.resetNodes();
+                    inner.resetNodes(event.getDataset());
                     innerChanged = true;
                 }
             }
             if (wayIds.contains(wayId) || innerChanged) {
-                resetNodes();
+                resetNodes(event.getDataset());
             }
         }
