Index: trunk/src/org/openstreetmap/josm/data/validation/TestError.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/TestError.java	(revision 17251)
+++ trunk/src/org/openstreetmap/josm/data/validation/TestError.java	(revision 17252)
@@ -11,4 +11,5 @@
 import java.util.List;
 import java.util.Locale;
+import java.util.Set;
 import java.util.TreeSet;
 import java.util.function.Supplier;
@@ -24,8 +25,11 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker;
 import org.openstreetmap.josm.data.validation.util.MultipleNameVisitor;
+import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
 import org.openstreetmap.josm.tools.I18n;
+import org.openstreetmap.josm.tools.Logging;
 
 /**
@@ -545,3 +549,36 @@
     }
 
+    /**
+     * Test if the primitives still show the same error. Maybe data was already changed. See #19956
+     * @return updated test or null if error cannot be reproduced.
+     * @since 17252
+     */
+    public TestError doubleCheck() {
+        // see #19956 check again
+        if (getTester() instanceof MapCSSTagChecker)
+            return this;
+        Test tester2;
+        try {
+            tester2 = getTester().getClass().newInstance();
+            Set<OsmPrimitive> toFix = primitives.stream()
+                    .filter(tester2::isPrimitiveUsable)
+                    .collect(Collectors.toSet());
+            if (toFix.isEmpty())
+                return null;
+
+            tester2.startTest(NullProgressMonitor.INSTANCE);
+            tester2.visit(toFix);
+            tester2.endTest();
+            for (TestError e : tester2.getErrors()) {
+                if (e.getCode() == this.getCode()) {
+                    return e;
+                }
+            }
+        } catch (InstantiationException | IllegalAccessException e1) {
+            Logging.error(e1);
+        }
+        return null;
+
+    }
+
 }
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 17251)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/ValidatorDialog.java	(revision 17252)
@@ -628,8 +628,11 @@
             if (error.isFixable()) {
                 if (error.getPrimitives().stream().noneMatch(p -> p.isDeleted() || p.getDataSet() == null)) {
-                    final Command fixCommand = error.getFix();
-                    if (fixCommand != null) {
-                        SwingUtilities.invokeAndWait(fixCommand::executeCommand);
-                        fixCommands.add(fixCommand);
+                    TestError checked = error.doubleCheck();
+                    if (checked != null) {
+                        final Command fixCommand = checked.getFix();
+                        if (fixCommand != null) {
+                            SwingUtilities.invokeAndWait(fixCommand::executeCommand);
+                            fixCommands.add(fixCommand);
+                        }
                     }
                 }
