Index: /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 3558)
+++ /trunk/src/org/openstreetmap/josm/data/AutosaveTask.java	(revision 3559)
@@ -221,14 +221,8 @@
                             File lastFile = info.backupFiles.pollLast();
                             if (lastFile != null) {
-                                File backupFile = new File(deletedLayersDir, lastFile.getName());
-                                lastFile.renameTo(backupFile);
-                                deletedLayers.add(lastFile);
+                                moveToDeletedLayersFolder(lastFile);
                             }
                             for (File file: info.backupFiles) {
                                 file.delete();
-                            }
-
-                            while (deletedLayers.size() > PROP_DELETED_LAYERS.get()) {
-                                deletedLayers.remove().delete();
                             }
                         } catch (IOException e) {
@@ -270,5 +264,5 @@
                 layerName = layerName.substring(0, layerName.lastIndexOf('.'));
                 result.add(new OsmDataLayer(ds, layerName, null));
-                f.renameTo(new File(deletedLayersDir, f.getName()));
+                moveToDeletedLayersFolder(f);
             } catch (FileNotFoundException e) {
                 // Should not happen
@@ -282,9 +276,25 @@
     }
 
+    private void moveToDeletedLayersFolder(File f) {
+        File backupFile = new File(deletedLayersDir, f.getName());
+        if (backupFile.exists()) {
+            deletedLayers.remove(backupFile);
+            backupFile.delete();
+        }
+        if (f.renameTo(backupFile)) {
+            deletedLayers.add(backupFile);
+        } else {
+            System.err.println(String.format("Warning: Could not move autosaved file %s to %s folder", f.getName(), deletedLayersDir.getName()));
+            f.delete();
+        }
+        while (deletedLayers.size() > PROP_DELETED_LAYERS.get()) {
+            deletedLayers.remove().delete();
+        }
+    }
+
     public void dicardUnsavedLayers() {
         for (File f: getUnsavedLayersFiles()) {
-            f.renameTo(new File(deletedLayersDir, f.getName()));
-        }
-    }
-
+            moveToDeletedLayersFolder(f);
+        }
+    }
 }
