Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 8659)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 8660)
@@ -451,5 +451,5 @@
                 @Override
                 public int getSize() {
-                    return yLayer.data.size();
+                    return yLayer.data != null ? yLayer.data.size() : 0;
                 }
             });
@@ -824,6 +824,8 @@
             // The selection of images we are about to correlate may have changed.
             // So reset all images.
-            for (ImageEntry ie: yLayer.data) {
-                ie.tmp = null;
+            if (yLayer.data != null) {
+                for (ImageEntry ie: yLayer.data) {
+                    ie.tmp = null;
+                }
             }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 8659)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 8660)
@@ -367,14 +367,18 @@
         int tagged = 0;
         int newdata = 0;
-        for (ImageEntry e : data) {
-            if (e.getPos() != null) {
-                tagged++;
-            }
-            if (e.hasNewGpsData()) {
-                newdata++;
+        int n = 0;
+        if (data != null) {
+            n = data.size();
+            for (ImageEntry e : data) {
+                if (e.getPos() != null) {
+                    tagged++;
+                }
+                if (e.hasNewGpsData()) {
+                    newdata++;
+                }
             }
         }
         return "<html>"
-                + trn("{0} image loaded.", "{0} images loaded.", data.size(), data.size())
+                + trn("{0} image loaded.", "{0} images loaded.", n, n)
                 + " " + trn("{0} was found to be GPS tagged.", "{0} were found to be GPS tagged.", tagged, tagged)
                 + (newdata > 0 ? "<br>" + trn("{0} has updated GPS data.", "{0} have updated GPS data.", newdata, newdata) : "")
@@ -405,7 +409,9 @@
         l.stopLoadThumbs();
 
-        final ImageEntry selected = l.currentPhoto >= 0 ? l.data.get(l.currentPhoto) : null;
-
-        data.addAll(l.data);
+        final ImageEntry selected = l.data != null && l.currentPhoto >= 0 ? l.data.get(l.currentPhoto) : null;
+
+        if (l.data != null) {
+            data.addAll(l.data);
+        }
         Collections.sort(data);
 
@@ -492,25 +498,27 @@
                 tempG.setComposite(saveComp);
 
-                for (ImageEntry e : data) {
-                    if (e.getPos() == null) {
-                        continue;
+                if (data != null) {
+                    for (ImageEntry e : data) {
+                        if (e.getPos() == null) {
+                            continue;
+                        }
+                        Point p = mv.getPoint(e.getPos());
+                        if (e.thumbnail != null) {
+                            Dimension d = scaledDimension(e.thumbnail);
+                            Rectangle target = new Rectangle(p.x - d.width / 2, p.y - d.height / 2, d.width, d.height);
+                            if (clip.intersects(target)) {
+                                tempG.drawImage(e.thumbnail, target.x, target.y, target.width, target.height, null);
+                            }
+                        } else { // thumbnail not loaded yet
+                            icon.paintIcon(mv, tempG,
+                                    p.x - icon.getIconWidth() / 2,
+                                    p.y - icon.getIconHeight() / 2);
+                        }
                     }
-                    Point p = mv.getPoint(e.getPos());
-                    if (e.thumbnail != null) {
-                        Dimension d = scaledDimension(e.thumbnail);
-                        Rectangle target = new Rectangle(p.x - d.width / 2, p.y - d.height / 2, d.width, d.height);
-                        if (clip.intersects(target)) {
-                            tempG.drawImage(e.thumbnail, target.x, target.y, target.width, target.height, null);
-                        }
-                    } else { // thumbnail not loaded yet
-                        icon.paintIcon(mv, tempG,
-                                p.x - icon.getIconWidth() / 2,
-                                p.y - icon.getIconHeight() / 2);
-                    }
                 }
                 updateOffscreenBuffer = false;
             }
             g.drawImage(offscreenBuffer, 0, 0, null);
-        } else {
+        } else if (data != null) {
             for (ImageEntry e : data) {
                 if (e.getPos() == null) {
@@ -1022,5 +1030,7 @@
                     MapFrame.removeMapModeChangeListener(mapModeListener);
                     currentPhoto = -1;
-                    data.clear();
+                    if (data != null) {
+                        data.clear();
+                    }
                     data = null;
                     // stop listening to layer change events
