Index: trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(revision 17139)
+++ trunk/src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java	(revision 17140)
@@ -391,4 +391,5 @@
         if (isChanged)
             return new ChangeCommand(relation, modifiedRelation);
+        modifiedRelation.setMembers(null); // see #19885
         return null;
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 17139)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 17140)
@@ -951,4 +951,7 @@
                 modified = true;
             }
+            if (!modified) {
+                relation.setMembers(null); // see #19885
+            }
             return modified ? new ChangeCommand(orig, relation) : null;
         } catch (AddAbortException ign) {
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 17139)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 17140)
@@ -222,6 +222,5 @@
         members.clear();
         if (relation != null) {
-            // make sure we work with clones of the relation members in the model.
-            members.addAll(new Relation(relation).getMembers());
+            members.addAll(relation.getMembers());
         }
         fireTableDataChanged();
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java	(revision 17139)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java	(revision 17140)
@@ -126,4 +126,7 @@
 
     protected final void setRelationSnapshot(Relation snapshot) {
+        if (relationSnapshot != null && relationSnapshot.getDataSet() == null)
+            relationSnapshot.setMembers(null); // see #19885
+
         Relation oldValue = relationSnapshot;
         relationSnapshot = snapshot;
@@ -155,4 +158,5 @@
     public void dispose() {
         layer.setRecentRelation(relation);
+        setRelation(null);
         super.dispose();
     }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 17139)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SavingAction.java	(revision 17140)
@@ -88,4 +88,6 @@
         if (!editedRelation.hasEqualSemanticAttributes(originRelation, false)) {
             UndoRedoHandler.getInstance().add(new ChangeCommand(originRelation, editedRelation));
+        } else {
+            editedRelation.setMembers(null); // see #19885
         }
     }
