Index: src/org/openstreetmap/josm/data/UndoRedoHandler.java
===================================================================
--- src/org/openstreetmap/josm/data/UndoRedoHandler.java	(revision 17322)
+++ src/org/openstreetmap/josm/data/UndoRedoHandler.java	(working copy)
@@ -377,7 +377,13 @@
             try {
                 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));
                     if (commands.isEmpty()) {
