Index: trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 4373)
+++ trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java	(revision 4374)
@@ -245,4 +245,5 @@
         Collection<String> oldHistory = Main.pref.getCollection("file-open.history");
         List<String> history = new LinkedList<String>(oldHistory);
+        history.remove(filepath);
         history.add(0, filepath);
         Main.pref.putCollectionBounded("file-open.history", maxsize, history);
Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 4373)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 4374)
@@ -745,5 +745,5 @@
      */
     public boolean putCollectionBounded(String key, int maxsize, Collection<String> val) {
-        Collection<String> newCollection = new ArrayList<String>(maxsize);
+        Collection<String> newCollection = new ArrayList<String>(Math.min(maxsize, val.size()));
         for (String i : val) {
             if (newCollection.size() >= maxsize) {
