Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 7545)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 7546)
@@ -78,4 +78,5 @@
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.tagging.PresetHandler;
+import org.openstreetmap.josm.gui.tagging.TagEditorModel;
 import org.openstreetmap.josm.gui.tagging.TagEditorPanel;
 import org.openstreetmap.josm.gui.tagging.TaggingPreset;
@@ -738,8 +739,10 @@
     }
 
-    public static Command addPrimitivesToRelation(final Relation orig, Collection<? extends OsmPrimitive> primitivesToAdd) throws IllegalArgumentException {
+    public static Command addPrimitivesToRelation(final Relation orig, Collection<? extends OsmPrimitive> primitivesToAdd)
+            throws IllegalArgumentException {
         CheckParameterUtil.ensureParameterNotNull(orig, "orig");
         try {
-            final Collection<TaggingPreset> presets = TaggingPreset.getMatchingPresets(EnumSet.of(TaggingPresetType.RELATION), orig.getKeys(), false);
+            final Collection<TaggingPreset> presets = TaggingPreset.getMatchingPresets(
+                    EnumSet.of(TaggingPresetType.RELATION), orig.getKeys(), false);
             Relation relation = new Relation(orig);
             boolean modified = false;
@@ -1370,5 +1373,8 @@
         public void actionPerformed(ActionEvent e) {
             memberTable.stopHighlighting();
-            if (!memberTableModel.hasSameMembersAs(getRelationSnapshot()) || tagEditorPanel.getModel().isDirty()) {
+            TagEditorModel tagModel = tagEditorPanel.getModel();
+            Relation snapshot = getRelationSnapshot();
+            if ( (!memberTableModel.hasSameMembersAs(snapshot) || tagModel.isDirty())
+             && !(snapshot == null && tagModel.getTags().isEmpty())) {
                 //give the user a chance to save the changes
                 int ret = confirmClosingByCancel();
@@ -1378,6 +1384,5 @@
                     if (getRelation() == null) {
                         applyNewRelation();
-                    } else if (!memberTableModel.hasSameMembersAs(getRelationSnapshot())
-                            || tagEditorPanel.getModel().isDirty()) {
+                    } else if (!memberTableModel.hasSameMembersAs(snapshot) || tagModel.isDirty()) {
                         if (isDirtyRelation()) {
                             if (confirmClosingBecauseOfDirtyState()) {
@@ -1393,6 +1398,5 @@
                         }
                     }
-                }
-                else if (ret == 2) //Cancel, continue editing
+                } else if (ret == 2) //Cancel, continue editing
                     return;
                 //in case of "No, discard", there is no extra action to be performed here.
