Ticket #6367: undo_crash.patch

File undo_crash.patch, 1.7 KB (added by Manchito, 15 years ago)
  • src/org/openstreetmap/josm/actions/FollowLineAction.java

     
    3737                "followline.png",
    3838                tr("Continues drawing a line that shares nodes with another line."),
    3939                Shortcut.registerShortcut("tools:followline", tr(
    40                 "Tool: {0}", tr("Follow")),
    41                 KeyEvent.VK_F, Shortcut.GROUP_EDIT), true);
     40                        "Tool: {0}", tr("Follow")),
     41                        KeyEvent.VK_F, Shortcut.GROUP_EDIT), true);
    4242    }
    4343
    4444    @Override
     
    6161        if (osmLayer == null)
    6262            return;
    6363        if (!(Main.map.mapMode instanceof DrawAction)) return; // We are not on draw mode
    64        
     64
    6565        Collection<Node> selectedPoints = osmLayer.data.getSelectedNodes();
    6666        Collection<Way> selectedLines = osmLayer.data.getSelectedWays();
    6767        if ((selectedPoints.size() > 1) || (selectedLines.size() != 1)) // Unsuitable selection
    6868            return;
    69        
     69
    7070        Node last = ((DrawAction) Main.map.mapMode).getCurrentBaseNode();
     71        if (last == null) return; // This may occur after undo
    7172        Way follower = selectedLines.iterator().next();
    7273        Node prev = follower.getNode(1);
    7374        boolean reversed = true;
     
    7778        }
    7879        List<OsmPrimitive> referrers = last.getReferrers();
    7980        if (referrers.size() < 2) return; // There's nothing to follow
    80        
     81
    8182        Iterator<OsmPrimitive> i = referrers.iterator();
    8283        while (i.hasNext()) {
    8384            OsmPrimitive referrer = i.next();