Index: /trunk/src/org/openstreetmap/josm/actions/ValidateAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 16090)
+++ /trunk/src/org/openstreetmap/josm/actions/ValidateAction.java	(revision 16091)
@@ -68,5 +68,4 @@
 
         OsmValidator.initializeTests();
-        OsmValidator.initializeErrorLayer();
 
         Collection<Test> tests = OsmValidator.getEnabledTests(false);
@@ -144,6 +143,9 @@
                 map.validatorDialog.unfurlDialog();
                 map.validatorDialog.tree.setErrors(errors);
-                //FIXME: nicer way to find / invalidate the corresponding error layer
-                MainApplication.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
+                if (!errors.isEmpty()) {
+                    //FIXME: nicer way to find / invalidate the corresponding error layer
+                    OsmValidator.initializeErrorLayer();
+                    MainApplication.getLayerManager().getLayersOfType(ValidatorLayer.class).forEach(ValidatorLayer::invalidate);
+                }
             });
         }
@@ -154,5 +156,5 @@
             if (tests == null || tests.isEmpty())
                 return;
-            errors = new ArrayList<>(200);
+            errors = new ArrayList<>();
             getProgressMonitor().setTicksCount(tests.size() * validatedPrimitives.size());
             int testCounter = 0;
@@ -171,5 +173,5 @@
             }
             tests = null;
-            if (ValidatorPrefHelper.PREF_USE_IGNORE.get()) {
+            if (Boolean.TRUE.equals(ValidatorPrefHelper.PREF_USE_IGNORE.get())) {
                 getProgressMonitor().setCustomText("");
                 getProgressMonitor().subTask(tr("Updating ignored errors ..."));
Index: /trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 16090)
+++ /trunk/src/org/openstreetmap/josm/data/validation/OsmValidator.java	(revision 16091)
@@ -486,7 +486,5 @@
      */
     public static synchronized void initializeErrorLayer() {
-        if (!ValidatorPrefHelper.PREF_LAYER.get())
-            return;
-        if (errorLayer == null) {
+        if (errorLayer == null && Boolean.TRUE.equals(ValidatorPrefHelper.PREF_LAYER.get())) {
             errorLayer = new ValidatorLayer();
             MainApplication.getLayerManager().addLayer(errorLayer);
