Changeset 18131 in josm for trunk/src


Ignore:
Timestamp:
2021-08-10T23:33:40+02:00 (3 years ago)
Author:
Don-vip
Message:

fix #21215 - fix StackOverflowError in ComboBoxHistory (patch by taylor.smock)

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

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/widgets/ComboBoxHistory.java

    r12859 r18131  
    4242        String newEntry = o.getValue();
    4343
     44        boolean alreadyAdded = false;
    4445        // if history contains this object already, delete it,
    4546        // so that it looks like a move to the top
     
    4748            String oldEntry = getElementAt(i).getValue();
    4849            if (oldEntry.equals(newEntry)) {
    49                 removeElementAt(i);
     50                if (i == 0) {
     51                    alreadyAdded = true;
     52                    break;
     53                } else {
     54                    removeElementAt(i);
     55                }
    5056            }
    5157        }
    5258
    53         // insert element at the top
    54         insertElementAt(o, 0);
     59        if (!alreadyAdded) {
     60            // insert element at the top
     61            insertElementAt(o, 0);
     62        }
    5563
    5664        // remove an element, if the history gets too large
  • trunk/src/org/openstreetmap/josm/gui/widgets/HistoryComboBox.java

    r18128 r18131  
    66import javax.swing.text.JTextComponent;
    77
     8import org.openstreetmap.josm.data.tagging.ac.AutoCompletionItem;
    89import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
    910import org.openstreetmap.josm.spi.preferences.Config;
     
    5556     */
    5657    public void addCurrentItemToHistory() {
    57         model.addElement(getEditor().getItem().toString());
     58        Object item = getEditor().getItem();
     59        // This avoids instantiating multiple AutoCompletionItems
     60        if (item instanceof AutoCompletionItem) {
     61            model.addElement((AutoCompletionItem) item);
     62        } else {
     63            model.addElement(item.toString());
     64        }
    5865    }
    5966
Note: See TracChangeset for help on using the changeset viewer.