### Eclipse Workspace Patch 1.0
#P core
Index: src/org/openstreetmap/josm/io/GpxWriter.java
===================================================================
--- src/org/openstreetmap/josm/io/GpxWriter.java	(Revision 1596)
+++ src/org/openstreetmap/josm/io/GpxWriter.java	(Arbeitskopie)
@@ -62,7 +62,7 @@
         // for now it works, but future extension could get very complex and unmaintainable 
         for (Map.Entry<String, Object> ent : attr.entrySet()) {
             String k = ent.getKey();
-            if (k.equals("link")) {
+            if (k.equals(GpxData.META_LINKS)) {
                 for (GpxLink link : (Collection<GpxLink>) ent.getValue()) {
                     gpxLink(link);
                 }
Index: src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(Revision 1596)
+++ src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(Arbeitskopie)
@@ -79,16 +79,16 @@
         for (WayPoint wpt : indata.waypoints) {
             /* calculate time differences in waypoints */
             double time = wpt.time;
-            boolean wpt_has_link = wpt.attr.containsKey("link");
+            boolean wpt_has_link = wpt.attr.containsKey(GpxData.META_LINKS);
             if (firstTime < 0 && wpt_has_link) {
                 firstTime = time;
-                for (GpxLink oneLink : (Collection<GpxLink>) wpt.attr.get("link")) {
+                for (GpxLink oneLink : (Collection<GpxLink>) wpt.attr.get(GpxData.META_LINKS)) {
                     lastLinkedFile = oneLink.uri;
                     break;
                 }
             }
             if (wpt_has_link) {
-                for (GpxLink oneLink : (Collection<GpxLink>) wpt.attr.get("link")) {
+                for (GpxLink oneLink : (Collection<GpxLink>) wpt.attr.get(GpxData.META_LINKS)) {
                     if (!oneLink.uri.equals(lastLinkedFile))firstTime = time;
                     lastLinkedFile = oneLink.uri;
                     break;
Index: src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java
===================================================================
--- src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java	(Revision 1596)
+++ src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java	(Arbeitskopie)
@@ -16,6 +16,7 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.gpx.GpxData;
 import org.openstreetmap.josm.data.gpx.GpxLink;
 import org.openstreetmap.josm.data.gpx.WayPoint;
 import org.openstreetmap.josm.gui.MapView;
@@ -81,7 +82,7 @@
                 // cheapest way to check whether "link" object exists and is a non-empty
                 // collection of GpxLink objects...
                 try {
-                    for (GpxLink oneLink : (Collection<GpxLink>) wpt.attr.get("link")) {
+                    for (GpxLink oneLink : (Collection<GpxLink>) wpt.attr.get(GpxData.META_LINKS)) {
                         uri = oneLink.uri;
                         break;
                     }
Index: src/org/openstreetmap/josm/io/GpxReader.java
===================================================================
--- src/org/openstreetmap/josm/io/GpxReader.java	(Revision 1596)
+++ src/org/openstreetmap/josm/io/GpxReader.java	(Arbeitskopie)
@@ -236,7 +236,7 @@
                 }
                 if (currentState == state.author) {
                     currentData.attr.put(GpxData.META_AUTHOR_LINK, currentLink);
-                } else if (currentState == state.metadata) {
+                } else if (currentState != state.link) {
                     Map<String, Object> attr = getAttr();
                     if (!attr.containsKey(GpxData.META_LINKS)) {
                         attr.put(GpxData.META_LINKS, new LinkedList<GpxLink>());
