Ticket #20405: 20405.patch
| File 20405.patch, 1.4 KB (added by , 2 years ago) |
|---|
-
src/org/openstreetmap/josm/io/AbstractParser.java
4 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 5 6 6 import java.time.Instant; 7 import java.util.HashMap; 8 import java.util.Map; 7 9 8 10 import org.openstreetmap.josm.data.coor.LatLon; 9 11 import org.openstreetmap.josm.data.osm.OsmPrimitiveType; … … 30 32 protected Locator locator; 31 33 /** if true, replace user information in input by anonymous user */ 32 34 protected boolean useAnonymousUser; 35 private Map<RelationMemberData, RelationMemberData> memberCache = new HashMap<>(); 33 36 34 37 @Override 35 38 public void setDocumentLocator(Locator locator) { … … 181 184 } 182 185 String role = getMandatoryAttributeString(atts, "role"); 183 186 RelationMemberData member = new RelationMemberData(role, type, ref); 184 ((HistoryRelation) currentPrimitive).addMember(member); 187 // see #20405: cache equal instances of members 188 RelationMemberData cachedMember = memberCache .putIfAbsent(member, member); 189 if (cachedMember == null) 190 cachedMember = member; 191 ((HistoryRelation) currentPrimitive).addMember(cachedMember); 185 192 } 186 193 187 194 protected final boolean doStartElement(String qName, Attributes atts) throws SAXException {
