Modify

Opened 5 years ago

Closed 5 years ago

#17680 closed defect (fixed)

Suspicious code in Geometry.addIntersections()

Reported by: GerdP Owned by: team
Priority: minor Milestone: 19.05
Component: Core Version:
Keywords: javadoc Cc:

Description

The javadoc says

    /**
     * Will find all intersection and add nodes there for list of given ways.
     * Handles self-intersections too.
     * And makes commands to add the intersection points to ways.
     *
     * Prerequisite: no two nodes have the same coordinates.
     *
     * @param ways  a list of ways to test
     * @param test  if false, do not build list of Commands, just return nodes
     * @param cmds  list of commands, typically empty when handed to this method.
     *              Will be filled with commands that add intersection nodes to
     *              the ways.
     * @return list of new nodes
     */

I tried to use this method with a list of multipolygon ways like this
Set<Node> selfIntersections = Geometry.addIntersections(ways, false, null);

I got a NPE because in line 218 there is no check if test is set or not:

if (intNode == newNode) {
    cmds.add(new AddCommand(dataset, intNode));
}

I wonder if JoinAreasAction needs this or if it sometimes fails because of this. It uses the method like this:

    Set<Node> nodes = Geometry.addIntersections(allStartingWays, false, cmds);

Attachments (1)

17680.patch (988 bytes ) - added by GerdP 5 years ago.

Download all attachments as: .zip

Change History (5)

by GerdP, 5 years ago

Attachment: 17680.patch added

comment:1 by GerdP, 5 years ago

Milestone: 19.05

Seems that only the javadoc is wrong. The attached patch fixes this.

If I hear no complains I'll commit this tomorrow.

comment:2 by Don-vip, 5 years ago

Yep, the javadoc looks wrong, you're right.

comment:3 by Don-vip, 5 years ago

Keywords: javadoc added
Priority: normalminor

comment:4 by GerdP, 5 years ago

Resolution: fixed
Status: newclosed

In 15055/josm:

fix #17680: correct misleading javadoc

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain team.
as The resolution will be set.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.