Index: test/unit/org/openstreetmap/josm/data/osm/RelationTest.java
===================================================================
--- test/unit/org/openstreetmap/josm/data/osm/RelationTest.java	(Revision 0)
+++ test/unit/org/openstreetmap/josm/data/osm/RelationTest.java	(Revision 0)
@@ -0,0 +1,20 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data.osm;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class RelationTest {
+    @Test(expected=NullPointerException.class)
+    public void createNewRelation() {
+        new Relation(null);
+    }
+
+    @Test
+    public void equalSemenaticsToNull() {
+        Relation relation = new Relation();
+        assertFalse(relation.hasEqualTechnicalAttributes(null));
+    }
+
+}
Index: src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(Revision 1797)
+++ src/org/openstreetmap/josm/gui/dialogs/relation/MemberTableModel.java	(Arbeitskopie)
@@ -112,6 +112,7 @@
             members.set(row-1, member1);
         }
         fireTableDataChanged();
+        getSelectionModel();
         listSelectionModel.clearSelection();
         for (int row : selectedRows) {
             row--;
@@ -132,6 +133,7 @@
             members.set(row+1, member1);
         }
         fireTableDataChanged();
+        getSelectionModel();
         listSelectionModel.clearSelection();
         for (int row : selectedRows) {
             row++;
@@ -208,6 +210,7 @@
         for (RelationMember member: selectedMembers) {
             int row = members.indexOf(member);
             if (row >= 0) {
+                getSelectionModel();
                 listSelectionModel.addSelectionInterval(row,row);
                 min = Math.min(row, min);
             }
Index: src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(Revision 1797)
+++ src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(Arbeitskopie)
@@ -540,10 +540,10 @@
             // tags, don't add an empty relation
             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()) {
             Relation editedRelation = new Relation(getRelation());
Index: src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java	(Revision 1797)
+++ src/org/openstreetmap/josm/gui/dialogs/relation/RelationEditor.java	(Arbeitskopie)
@@ -40,7 +40,9 @@
      */
     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;
 
     /** the data layer the relation belongs to */
@@ -101,7 +103,7 @@
                         false
         );
 
-        this.relationSnapshot = new Relation(relation);
+        this.relationSnapshot = (relation == null) ? null : new Relation(relation);
         this.relation = relation;
         this.layer = layer;
     }
