﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
7593	IllegalPathStateException when attempting to purge an item in a Multipolygon	rickmastfan67	team	"Just had this happen when I purged an item in JOSM.  Here are the steps to reproduce:

1. Download the following area: http://www.openstreetmap.org/?lat=35.81729&lon=-82.5362&zoom=16&layers=M
2. Zoom in on the Interchange you see (Exit #11 on I-26) to about 63.9m
3. Now, look for a ""boundary=administrative"" way that looks like a box. (It's right above the SB ramps for Exit #11)
4. Select it (should be part of the ""Mars Hill"" multipolygon relation).
5. Now Edit>Purge and hit the Purge button that shows up in the ""Confirm Purging"" window.
6. JOSM will now crash and provide the following bug report.

Also, while the item in question will still get purged, it will '''not''' show up in the Command Stack in case you want to undo it, forcing you to re-download the entire area to get it back.

{{{
Repository Root: http://josm.openstreetmap.de/svn
Build-Date: 2012-04-10 01:32:25
Last Changed Author: akks
Revision: 5174
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
URL: http://josm.openstreetmap.de/svn/trunk
Last Changed Date: 2012-04-09 09:15:31 +0200 (Mon, 09 Apr 2012)
Last Changed Rev: 5174

Identification: JOSM/1.5 (5174 en)
Memory Usage: 303 MB / 2730 MB (80 MB allocated, but free)
Java version: 1.6.0_31, Sun Microsystems Inc., Java HotSpot(TM) 64-Bit Server VM
Operating system: Windows 7
Dataset consistency test: No problems found

Plugin: OpeningHoursEditor (27852)
Plugin: buildings_tools (27984)
Plugin: licensechange (27964)
Plugin: mapdust (27884)
Plugin: measurement (27957)
Plugin: openstreetbugs (27852)
Plugin: reverter (28089)
Plugin: turnrestrictions (27891)
Plugin: undelete (27852)
Plugin: utilsplugin2 (28045)

java.awt.geom.IllegalPathStateException: missing initial moveto in path definition
	at java.awt.geom.Path2D$Double.needRoom(Unknown Source)
	at java.awt.geom.Path2D.closePath(Unknown Source)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon$PolyData.buildPoly(Multipolygon.java:223)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon$PolyData.resetPoly(Multipolygon.java:310)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon$PolyData.resetNodes(Multipolygon.java:304)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon$PolyData.wayNodesChanged(Multipolygon.java:338)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache.dispatchEvent(MultipolygonCache.java:181)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache.processEvent(MultipolygonCache.java:162)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache.updateMultipolygonsReferringTo(MultipolygonCache.java:149)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache.updateMultipolygonsReferringTo(MultipolygonCache.java:128)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache.updateMultipolygonsReferringTo(MultipolygonCache.java:123)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache.wayNodesChanged(MultipolygonCache.java:216)
	at org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent.fire(WayNodesChangedEvent.java:22)
	at org.openstreetmap.josm.data.osm.DataSet.fireEventToListeners(DataSet.java:1008)
	at org.openstreetmap.josm.data.osm.DataSet.endUpdate(DataSet.java:987)
	at org.openstreetmap.josm.command.PurgeCommand.executeCommand(PurgeCommand.java:119)
	at org.openstreetmap.josm.data.UndoRedoHandler.addNoRedraw(UndoRedoHandler.java:36)
	at org.openstreetmap.josm.data.UndoRedoHandler.add(UndoRedoHandler.java:58)
	at org.openstreetmap.josm.actions.PurgeAction.actionPerformed(PurgeAction.java:207)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$2.run(Unknown Source)
	at java.awt.EventQueue$2.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
}}}
"	defect	closed	normal		Core	latest	fixed		
