Index: /trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10475)
+++ /trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 10476)
@@ -632,17 +632,23 @@
             registeredLayers.put(layer, new WarningLayerPainter(layer));
             // Layers may trigger a redraw during this call if they open dialogs.
-            registeredLayers.put(layer, layer.attachToMapView(new MapViewEvent(this, false)));
-
-            ProjectionBounds viewProjectionBounds = layer.getViewProjectionBounds();
-            if (viewProjectionBounds != null) {
-                scheduleZoomTo(new ViewportData(viewProjectionBounds));
-            }
-
-            layer.addPropertyChangeListener(this);
-            Main.addProjectionChangeListener(layer);
-            invalidatedListener.addTo(layer);
-            AudioPlayer.reset();
-
-            repaint();
+            LayerPainter painter = layer.attachToMapView(new MapViewEvent(this, false));
+            if (!registeredLayers.containsKey(layer)) {
+                // The layer may have removed itself during attachToMapView()
+                Main.warn("Layer was removed during attachToMapView()");
+            } else {
+                registeredLayers.put(layer, painter);
+
+                ProjectionBounds viewProjectionBounds = layer.getViewProjectionBounds();
+                if (viewProjectionBounds != null) {
+                    scheduleZoomTo(new ViewportData(viewProjectionBounds));
+                }
+
+                layer.addPropertyChangeListener(this);
+                Main.addProjectionChangeListener(layer);
+                invalidatedListener.addTo(layer);
+                AudioPlayer.reset();
+
+                repaint();
+            }
         } catch (RuntimeException t) {
             throw BugReport.intercept(t).put("layer", e.getAddedLayer());
