Index: trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 2516)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 2517)
@@ -248,20 +248,6 @@
      * dataset. (However, the selection does only change in the active layer)
      */
-    public static Collection<SelectionChangedListener> selListeners = 
+    public static Collection<SelectionChangedListener> selListeners =
         Collections.synchronizedList(new LinkedList<SelectionChangedListener>());
-
-    /**
-     * notifies all registered selection change listeners about the current selection of
-     * primitives
-     *
-     * @param sel the current selection
-     */
-    private static void notifySelectionChangeListeners(Collection<? extends OsmPrimitive> sel) {
-        synchronized (selListeners) {
-            for (SelectionChangedListener l : selListeners) {
-                l.selectionChanged(sel);
-            }
-        }
-    }
 
     /**
@@ -271,5 +257,10 @@
      */
     public void fireSelectionChanged(){
-        notifySelectionChangeListeners(selectedPrimitives);
+        synchronized (selListeners) {
+            List<? extends OsmPrimitive> currentSelection = Collections.unmodifiableList(new ArrayList<OsmPrimitive>(selectedPrimitives));
+            for (SelectionChangedListener l : selListeners) {
+                l.selectionChanged(currentSelection);
+            }
+        }
     }
 
