Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 1797)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 1798)
@@ -541,8 +541,8 @@
             if(memberTableModel.getRowCount() == 0 && tagEditorModel.getKeys().isEmpty())
                 return;
-            Relation clone = new Relation(getRelation());
-            tagEditorModel.applyToPrimitive(clone);
-            memberTableModel.applyToRelation(clone);
-            Main.main.undoRedo.add(new AddCommand(clone));
+            Relation newRelation = new Relation();
+            tagEditorModel.applyToPrimitive(newRelation);
+            memberTableModel.applyToRelation(newRelation);
+            Main.main.undoRedo.add(new AddCommand(newRelation));
             DataSet.fireSelectionChanged(Main.ds.getSelected());
         } else if (! memberTableModel.hasSameMembersAs(getRelation()) || tagEditorModel.isDirty()) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 1797)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(revision 1798)
@@ -113,4 +113,5 @@
         }
         fireTableDataChanged();
+        getSelectionModel();
         listSelectionModel.clearSelection();
         for (int row : selectedRows) {
@@ -133,4 +134,5 @@
         }
         fireTableDataChanged();
+        getSelectionModel();
         listSelectionModel.clearSelection();
         for (int row : selectedRows) {
@@ -209,4 +211,5 @@
             int row = members.indexOf(member);
             if (row >= 0) {
+                getSelectionModel();
                 listSelectionModel.addSelectionInterval(row,row);
                 min = Math.min(row, min);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java	(revision 1797)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java	(revision 1798)
@@ -41,5 +41,7 @@
     private Relation relation;
 
-    /** The version of the relation when editing is started. */
+    /**
+     * The version of the relation when editing is started.  This is
+     * null if a new relation is created. */
     private Relation relationSnapshot;
 
@@ -102,5 +104,5 @@
         );
 
-        this.relationSnapshot = new Relation(relation);
+        this.relationSnapshot = (relation == null) ? null : new Relation(relation);
         this.relation = relation;
         this.layer = layer;
