Ticket #16543: directdownload.34484.patch

File directdownload.34484.patch, 1.9 KB (added by reubot, 8 years ago)

Fix crash when gpx contains multiple segments

  • src/org/openstreetmap/josm/plugins/directdownload/DirectDownload.java

     
    5959                if (data == null) {
    6060                    return;
    6161                }
     62                GpxData dataNew = new GpxData();
    6263
    6364                for (GpxTrack trk : data.getTracks()) {
    6465                    HashMap<String, Object> attrib = new HashMap<>(trk.getAttributes());
    6566                    if (!trk.getAttributes().containsKey(GpxConstants.GPX_NAME)) {
    66                         System.out.println(track.filename);
     67                        // System.out.println(track.filename);
    6768                        attrib.put(GpxConstants.GPX_NAME, track.filename);
    6869                    }
    6970                    if (!trk.getAttributes().containsKey(GpxConstants.GPX_DESC)) {
    70                         System.out.println(track.description);
     71                        // System.out.println(track.description);
    7172                        attrib.put(GpxConstants.GPX_DESC, track.description);
    7273                    }
    7374                    // replace the existing trace in the unmodifiable tracks
    7475                    data.removeTrack(trk);
    75                     trk = new ImmutableGpxTrack(new ArrayList<>(trk.getSegments()), attrib);
    76                     data.addTrack(trk);
     76                    GpxTrack trkNew = new ImmutableGpxTrack(new ArrayList<>(trk.getSegments()), attrib);
     77                    dataNew.addTrack(trkNew);
    7778                }
    7879
     80                data = dataNew;
     81
    7982                final GpxLayer gpxLayer = new GpxLayer(data, (track.filename + " " + track.description).trim());
    8083
    8184                if (data.hasRoutePoints() || data.hasTrackPoints()) {