Index: trunk/src/org/openstreetmap/josm/actions/upload/FixDataHook.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/upload/FixDataHook.java	(revision 5766)
+++ trunk/src/org/openstreetmap/josm/actions/upload/FixDataHook.java	(revision 5767)
@@ -6,7 +6,7 @@
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -73,23 +73,26 @@
         @Override
         public boolean fixKeys(Map<String, String> keys, OsmPrimitive osm) {
-            boolean changed = false;
-            for(Entry<String, String> e : keys.entrySet()) {
+            Map<String, String> newKeys = new HashMap<String, String>(keys);
+            for (Entry<String, String> e : keys.entrySet()) {
                 String v = e.getValue().trim();
                 String k = e.getKey().trim();
                 if(!e.getKey().equals(k)) {
-                    changed = true;
                     boolean drop = k.isEmpty() || v.isEmpty();
                     if(drop || !keys.containsKey(k)) {
-                        keys.remove(e.getKey());
+                        newKeys.remove(e.getKey());
                         if(!drop)
-                            keys.put(k, v);
+                            newKeys.put(k, v);
                     }
                 } else if(!e.getValue().equals(v)) {
                     if(v.isEmpty())
-                        keys.remove(k);
+                        newKeys.remove(k);
                     else
-                        keys.put(k, v);
-                    changed = true;
+                        newKeys.put(k, v);
                 }
+            }
+            boolean changed = !keys.equals(newKeys);
+            if (changed) {
+                keys.clear();
+                keys.putAll(newKeys);
             }
             return changed;
@@ -180,5 +183,4 @@
         Collection<Command> cmds = new LinkedList<Command>();
 
-        boolean needsChange = false;
         for (OsmPrimitive osm : objectsToUpload) {
             Map<String, String> keys = osm.getKeys();
