Index: /trunk/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java	(revision 4144)
+++ /trunk/src/org/openstreetmap/josm/data/imagery/ImageryLayerInfo.java	(revision 4145)
@@ -58,46 +58,50 @@
                 }
                 MirroredInputStream s = new MirroredInputStream(source, -1);
-                InputStreamReader r;
-                try
-                {
-                    r = new InputStreamReader(s, "UTF-8");
-                }
-                catch (UnsupportedEncodingException e)
-                {
-                    r = new InputStreamReader(s);
-                }
-                BufferedReader reader = new BufferedReader(r);
-                String line;
-                while((line = reader.readLine()) != null)
-                {
-                    String val[] = line.split(";");
-                    if(!line.startsWith("#") && (val.length == 3 || val.length == 4)) {
-                        boolean force = "true".equals(val[0]);
-                        String name = tr(val[1]);
-                        String url = val[2];
-                        String eulaAcceptanceRequired = null;
+                try {
+                    InputStreamReader r;
+                    try
+                    {
+                        r = new InputStreamReader(s, "UTF-8");
+                    }
+                    catch (UnsupportedEncodingException e)
+                    {
+                        r = new InputStreamReader(s);
+                    }
+                    BufferedReader reader = new BufferedReader(r);
+                    String line;
+                    while((line = reader.readLine()) != null)
+                    {
+                        String val[] = line.split(";");
+                        if(!line.startsWith("#") && (val.length == 3 || val.length == 4)) {
+                            boolean force = "true".equals(val[0]);
+                            String name = tr(val[1]);
+                            String url = val[2];
+                            String eulaAcceptanceRequired = null;
 
-                        if (val.length == 4) {
-                            // 4th parameter optional for license agreement (EULA)
-                            eulaAcceptanceRequired = val[3];
-                        }
+                            if (val.length == 4) {
+                                // 4th parameter optional for license agreement (EULA)
+                                eulaAcceptanceRequired = val[3];
+                            }
 
-                        defaultLayers.add(new ImageryInfo(name, url, eulaAcceptanceRequired));
+                            defaultLayers.add(new ImageryInfo(name, url, eulaAcceptanceRequired));
 
-                        if (force) {
-                            defaultsSave.add(url);
-                            if (!defaults.contains(url)) {
-                                for (ImageryInfo i : layers) {
-                                    if ((i.getImageryType() == ImageryType.WMS && url.equals(i.getUrl()))
-                                            || url.equals(i.getFullUrl())) {
-                                        force = false;
+                            if (force) {
+                                defaultsSave.add(url);
+                                if (!defaults.contains(url)) {
+                                    for (ImageryInfo i : layers) {
+                                        if ((i.getImageryType() == ImageryType.WMS && url.equals(i.getUrl()))
+                                                || url.equals(i.getFullUrl())) {
+                                            force = false;
+                                        }
                                     }
-                                }
-                                if (force) {
-                                    add(new ImageryInfo(name, url));
+                                    if (force) {
+                                        add(new ImageryInfo(name, url));
+                                    }
                                 }
                             }
                         }
                     }
+                } finally {
+                    s.close();
                 }
             }
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 4144)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 4145)
@@ -1232,19 +1232,26 @@
 
     public static Collection<TaggingPreset> readAll(String source, boolean validate) throws SAXException, IOException {
+        Collection<TaggingPreset> tp;
         MirroredInputStream s = new MirroredInputStream(source);
-        InputStream zip = s.getZipEntry("xml","preset");
-        if(zip != null) {
-            zipIcons = s.getFile();
-        }
-        InputStreamReader r;
-        try
-        {
-            r = new InputStreamReader(zip == null ? s : zip, "UTF-8");
-        }
-        catch (UnsupportedEncodingException e)
-        {
-            r = new InputStreamReader(zip == null ? s: zip);
-        }
-        return TaggingPreset.readAll(new BufferedReader(r), validate);
+        try {
+            InputStream zip = s.getZipEntry("xml","preset");
+            if(zip != null) {
+                zipIcons = s.getFile();
+            }
+            InputStreamReader r;
+            try {
+                r = new InputStreamReader(zip == null ? s : zip, "UTF-8");
+            } catch (UnsupportedEncodingException e) {
+                r = new InputStreamReader(zip == null ? s: zip);
+            }
+            try {
+                tp = TaggingPreset.readAll(new BufferedReader(r), validate);
+            } finally {
+                r.close();
+            }
+        } finally {
+            s.close();
+        }
+        return tp;
     }
 
Index: /trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java	(revision 4144)
+++ /trunk/src/org/openstreetmap/josm/io/MirroredInputStream.java	(revision 4145)
@@ -221,5 +221,6 @@
             conn.setReadTimeout(5000);
             bis = new BufferedInputStream(conn.getInputStream());
-            bos = new BufferedOutputStream( new FileOutputStream(destDirFile));
+            FileOutputStream fos = new FileOutputStream(destDirFile);
+            bos = new BufferedOutputStream(fos);
             byte[] buffer = new byte[4096];
             int length;
@@ -229,8 +230,15 @@
             bos.close();
             bos = null;
+            /* close fos as well to be sure! */
+            fos.close();
+            fos = null;
             file = new File(destDir, localPath);
-            destDirFile.renameTo(file);
-            Main.pref.putCollection(prefKey, Arrays.asList(new String[]
-            {Long.toString(System.currentTimeMillis()), file.toString()}));
+            if(destDirFile.renameTo(file)) {
+                Main.pref.putCollection(prefKey, Arrays.asList(new String[]
+                {Long.toString(System.currentTimeMillis()), file.toString()}));
+            } else {
+                System.out.println(tr("Failed to rename file {0} to {1}.",
+                destDirFile.getPath(), file.getPath()));
+            }
         } catch (IOException e) {
             if (age >= maxTime*1000 && age < maxTime*1000*2) {
Index: /trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 4144)
+++ /trunk/src/org/openstreetmap/josm/plugins/PluginInformation.java	(revision 4145)
@@ -79,7 +79,9 @@
         this.name = name;
         this.file = file;
+        FileInputStream fis = null;
         JarInputStream jar = null;
         try {
-            jar = new JarInputStream(new FileInputStream(file));
+            fis = new FileInputStream(file);
+            jar = new JarInputStream(fis);
             Manifest manifest = jar.getManifest();
             if (manifest == null)
@@ -93,4 +95,9 @@
                 try {
                     jar.close();
+                } catch(IOException e) { /* ignore */ }
+            }
+            if (fis != null) {
+                try {
+                    fis.close();
                 } catch(IOException e) { /* ignore */ }
             }
