﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
7110	Adding a node to multipolygon causes an exception	Daeron	Don-vip	"Adding a node to a way that is part of a multipolygon relation causes an exception. This bug was introduced in r4630.

Attached is a test file that includes a simple multipolygon with one outer way and one inner way. Adding a node to either one of those ways produces the following exception.

{{{
Build-Date: 2011-12-04 06:38:10
Revision: 4630
Is-Local-Build: true

Identification: JOSM/1.5 (4630 SVN fi)
Memory Usage: 151 MB / 910 MB (86 MB allocated, but free)
Java version: 1.6.0_29, Sun Microsystems Inc., Java HotSpot(TM) 64-Bit Server VM
Operating system: Linux

Dataset consistency test:
Exception during dataset integrity test:
java.lang.NullPointerException
	at org.openstreetmap.josm.data.osm.DatasetConsistencyTest.checkReferredPrimitive(DatasetConsistencyTest.java:99)
	at org.openstreetmap.josm.data.osm.DatasetConsistencyTest.referredPrimitiveNotInDataset(DatasetConsistencyTest.java:115)
	at org.openstreetmap.josm.data.osm.DatasetConsistencyTest.runTest(DatasetConsistencyTest.java:139)
	at org.openstreetmap.josm.data.osm.DatasetConsistencyTest.runTests(DatasetConsistencyTest.java:157)
	at org.openstreetmap.josm.actions.ShowStatusReportAction.getReportHeader(ShowStatusReportAction.java:67)
	at org.openstreetmap.josm.tools.BugReportExceptionHandler.handleException(BugReportExceptionHandler.java:106)
	at org.openstreetmap.josm.tools.BugReportExceptionHandler.handle(BugReportExceptionHandler.java:47)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at java.awt.EventDispatchThread.handleException(EventDispatchThread.java:385)
	at java.awt.EventDispatchThread.processException(EventDispatchThread.java:291)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:285)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)


Plugin: ImproveWayAccuracy (27178)
Plugin: PicLayer (27178)
Plugin: editgpx (27038)
Plugin: lakewalker (27178)
Plugin: licensechange (27161)
Plugin: measurement (26731)
Plugin: reverter (27019)
Plugin: utilsplugin2 (27178)

java.lang.NullPointerException
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon$PolyData.resetNodes(Multipolygon.java:286)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon$PolyData.wayNodesChanged(Multipolygon.java:323)
	at org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache.dispatchEvent(MultipolygonCache.java:180)
	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:214)
	at org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent.fire(WayNodesChangedEvent.java:22)
	at org.openstreetmap.josm.data.osm.DataSet.fireEventToListeners(DataSet.java:1022)
	at org.openstreetmap.josm.data.osm.DataSet.endUpdate(DataSet.java:1001)
	at org.openstreetmap.josm.data.osm.OsmPrimitive.writeUnlock(OsmPrimitive.java:323)
	at org.openstreetmap.josm.data.osm.Way.cloneFrom(Way.java:265)
	at org.openstreetmap.josm.command.ChangeCommand.executeCommand(ChangeCommand.java:43)
	at org.openstreetmap.josm.command.SequenceCommand.executeCommand(SequenceCommand.java:53)
	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.mapmode.DrawAction.mouseReleased(DrawAction.java:529)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
	at java.awt.Component.processMouseEvent(Component.java:6288)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6053)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4651)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4481)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
	at java.awt.EventQueue.access$000(EventQueue.java:84)
	at java.awt.EventQueue$1.run(EventQueue.java:602)
	at java.awt.EventQueue$1.run(EventQueue.java:600)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
	at java.awt.EventQueue$2.run(EventQueue.java:616)
	at java.awt.EventQueue$2.run(EventQueue.java:614)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
}}}
"	defect	closed	critical		Core	latest	fixed		
