Index: trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 3216)
+++ trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java	(revision 3217)
@@ -260,4 +260,5 @@
             cmds.add(new ChangeCommand(targetNode, newTargetNode));
         }
+        cmds.addAll(dialog.buildResolutionCommands());
         if (!nodesToDelete.isEmpty()) {
             cmds.add(new DeleteCommand(nodesToDelete));
@@ -266,5 +267,4 @@
             cmds.add(new DeleteCommand(waysToDelete));
         }
-        cmds.addAll(dialog.buildResolutionCommands());
         Command cmd = new SequenceCommand(tr("Merge {0} nodes", nodes.size()), cmds);
         return cmd;
Index: trunk/src/org/openstreetmap/josm/io/OsmReader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 3216)
+++ trunk/src/org/openstreetmap/josm/io/OsmReader.java	(revision 3217)
@@ -271,4 +271,7 @@
                 String key = atts.getValue("k");
                 String value = atts.getValue("v");
+                if (key == null || value == null) {
+                    throwException(tr("Missing key or value attribute in tag."));
+                }
                 currentPrimitive.put(intern(key), intern(value));
 
