Index: trunk/src/org/openstreetmap/josm/command/AddCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/AddCommand.java	(revision 7586)
+++ trunk/src/org/openstreetmap/josm/command/AddCommand.java	(revision 7587)
@@ -12,4 +12,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
+import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
@@ -48,8 +49,16 @@
     }
 
+    protected static final void checkNodeStyles(OsmPrimitive osm) {
+        if (osm instanceof Way) {
+            // Fix #10557 - node icon not updated after undoing/redoing addition of a way
+            ((Way)osm).clearCachedNodeStyles();
+        }
+    }
+
     @Override
     public boolean executeCommand() {
         getLayer().data.addPrimitive(osm);
         osm.setModified(true);
+        checkNodeStyles(osm);
         return true;
     }
@@ -58,4 +67,5 @@
     public void undoCommand() {
         getLayer().data.removePrimitive(osm);
+        checkNodeStyles(osm);
     }
 
Index: trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 7586)
+++ trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 7587)
@@ -739,8 +739,11 @@
     protected void keysChangedImpl(Map<String, String> originalKeys) {
         super.keysChangedImpl(originalKeys);
+        clearCachedNodeStyles();
+    }
+
+    public final void clearCachedNodeStyles() {
         for (final Node n : nodes) {
             n.clearCachedStyle();
         }
     }
-
 }
