Index: trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 8944)
+++ trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 8945)
@@ -28,4 +28,5 @@
  *
  * @author imi
+ * @since 24
  */
 public class ChangePropertyCommand extends Command {
@@ -33,5 +34,6 @@
      * All primitives that are affected with this command.
      */
-    private final List<OsmPrimitive> objects;
+    private final List<OsmPrimitive> objects = new LinkedList<>();
+
     /**
      * Key and value pairs. If value is <code>null</code>, delete all key references with the given
@@ -48,5 +50,4 @@
      */
     public ChangePropertyCommand(Collection<? extends OsmPrimitive> objects, Map<String, String> tags) {
-        this.objects = new LinkedList<>();
         this.tags = tags;
         init(objects);
@@ -61,5 +62,4 @@
      */
     public ChangePropertyCommand(Collection<? extends OsmPrimitive> objects, String key, String value) {
-        this.objects = new LinkedList<>();
         this.tags = new HashMap<>(1);
         this.tags.put(key, value);
@@ -108,4 +108,6 @@
     @Override
     public boolean executeCommand() {
+        if (objects.isEmpty())
+            return true;
         final DataSet dataSet = objects.get(0).getDataSet();
         dataSet.beginUpdate();
@@ -197,5 +199,6 @@
     }
 
-    @Override public Collection<PseudoCommand> getChildren() {
+    @Override
+    public Collection<PseudoCommand> getChildren() {
         if (objects.size() == 1)
             return null;
@@ -221,4 +224,14 @@
 
     /**
+     * Returns the number of objects that will effectively be modified, before the command is executed.
+     * @return the number of objects that will effectively be modified (can be 0)
+     * @see Command#getParticipatingPrimitives()
+     * @since 8945
+     */
+    public final int getObjectsNumber() {
+        return objects.size();
+    }
+
+    /**
      * Returns the tags to set (key/value pairs).
      * @return the tags to set (key/value pairs)
Index: trunk/src/org/openstreetmap/josm/command/Command.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/Command.java	(revision 8944)
+++ trunk/src/org/openstreetmap/josm/command/Command.java	(revision 8945)
@@ -240,4 +240,5 @@
     /**
      * Return the primitives that take part in this command.
+     * The collection is computed during execution.
      */
     @Override
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 8944)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 8945)
@@ -453,5 +453,8 @@
         List<Command> cmds = new ArrayList<>();
         for (Tag tag: changedTags) {
-            cmds.add(new ChangePropertyCommand(sel, tag.getKey(), tag.getValue()));
+            ChangePropertyCommand cmd = new ChangePropertyCommand(sel, tag.getKey(), tag.getValue());
+            if (cmd.getObjectsNumber() > 0) {
+                cmds.add(cmd);
+            }
         }
 
