Changeset 16555 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2020-06-07T15:23:42+02:00 (4 years ago)
Author:
Don-vip
Message:

see #19334 - avoid ConcurrentModificationException while iterating over maps

Location:
trunk/src/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java

    r16445 r16555  
    187187                                Way w = (Way) sp;
    188188                                Map<String, String> keys = w.getKeys();
    189                                 for (String type: typeMap.keySet()) {
    190                                     if (keys.containsKey(type)) {
    191                                         typeMap.put(type, Boolean.TRUE);
     189                                for (Iterator<Entry<String, Boolean>> itt = typeMap.entrySet().iterator(); itt.hasNext();) {
     190                                    Entry<String, Boolean> e = itt.next();
     191                                    if (keys.containsKey(e.getKey())) {
     192                                        e.setValue(Boolean.TRUE);
    192193                                        typed = true;
    193194                                    }
  • trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryProvidersPanel.java

    r16438 r16555  
    1919import java.util.HashMap;
    2020import java.util.HashSet;
     21import java.util.Iterator;
    2122import java.util.List;
    2223import java.util.Map;
     24import java.util.Map.Entry;
    2325import java.util.Objects;
    2426import java.util.Optional;
     
    409411
    410412        private <T> void doCleanupResidualBounds(Map<Integer, T> map, Consumer<T> removalEffect) {
    411             for (Integer i : map.keySet()) {
    412                 int viewIndex = defaultTable.convertRowIndexToView(i);
     413            for (Iterator<Entry<Integer, T>> it = map.entrySet().iterator(); it.hasNext();) {
     414                Entry<Integer, T> e = it.next();
     415                int viewIndex = defaultTable.convertRowIndexToView(e.getKey());
    413416                if (!defaultTable.getSelectionModel().isSelectedIndex(viewIndex)) {
    414                     removalEffect.accept(map.remove(i));
     417                    it.remove();
     418                    removalEffect.accept(e.getValue());
    415419                }
    416420            }
Note: See TracChangeset for help on using the changeset viewer.