Index: trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 3909)
+++ trunk/src/org/openstreetmap/josm/command/ChangePropertyCommand.java	(revision 3910)
@@ -13,4 +13,5 @@
 import javax.swing.JLabel;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
@@ -73,17 +74,23 @@
 
     @Override public boolean executeCommand() {
-        super.executeCommand(); // save old
-        if (value == null) {
-            for (OsmPrimitive osm : objects) {
-                osm.setModified(true);
-                osm.remove(key);
+        Main.main.getCurrentDataSet().beginUpdate();
+        try {
+            super.executeCommand(); // save old
+            if (value == null) {
+                for (OsmPrimitive osm : objects) {
+                    osm.setModified(true);
+                    osm.remove(key);
+                }
+            } else {
+                for (OsmPrimitive osm : objects) {
+                    osm.setModified(true);
+                    osm.put(key, value);
+                }
             }
-        } else {
-            for (OsmPrimitive osm : objects) {
-                osm.setModified(true);
-                osm.put(key, value);
-            }
+            return true;
         }
-        return true;
+        finally {
+            Main.main.getCurrentDataSet().endUpdate();
+        }
     }
 
Index: trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 3909)
+++ trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 3910)
@@ -74,11 +74,17 @@
             return;
         Collection<? extends OsmPrimitive> oldSelection = Main.main.getCurrentDataSet().getSelected();
-        for (int i=1; i<=num; ++i) {
-            final Command c = commands.removeLast();
-            c.undoCommand();
-            redoCommands.addFirst(c);
-            if (commands.isEmpty()) {
-                break;
+        Main.main.getCurrentDataSet().beginUpdate();
+        try {
+            for (int i=1; i<=num; ++i) {
+                final Command c = commands.removeLast();
+                c.undoCommand();
+                redoCommands.addFirst(c);
+                if (commands.isEmpty()) {
+                    break;
+                }
             }
+        }
+        finally {
+            Main.main.getCurrentDataSet().endUpdate();
         }
         fireCommandsChanged();
