Index: trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 17341)
+++ trunk/src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 17342)
@@ -378,5 +378,11 @@
                 for (int i = 1; i <= num; ++i) {
                     final Command c = commands.removeLast();
-                    c.undoCommand();
+                    try {
+                        c.undoCommand();
+                    } catch (Exception e) { // NOPMD
+                        // fix #20098: restore command stack as we will not fire an event
+                        commands.add(c);
+                        throw e;
+                    }
                     redoCommands.addFirst(c);
                     fireEvent(new CommandUndoneEvent(this, c));
