Author: toad
Date: 2007-11-28 00:05:25 +0000 (Wed, 28 Nov 2007)
New Revision: 16000

Modified:
   trunk/freenet/src/freenet/io/AddressTracker.java
Log:
don't leak a filehandle if something is thrown

Modified: trunk/freenet/src/freenet/io/AddressTracker.java
===================================================================
--- trunk/freenet/src/freenet/io/AddressTracker.java    2007-11-27 23:24:26 UTC 
(rev 15999)
+++ trunk/freenet/src/freenet/io/AddressTracker.java    2007-11-28 00:05:25 UTC 
(rev 16000)
@@ -232,18 +232,27 @@
                File dataBak = new File(nodeDir, "packets-"+port+".bak");
                data.delete();
                dataBak.delete();
+               FileOutputStream fos = null;
                try {
-                       FileOutputStream fos = new FileOutputStream(dataBak);
+                       fos = new FileOutputStream(dataBak);
                        BufferedOutputStream bos = new 
BufferedOutputStream(fos);
                        OutputStreamWriter osw = new OutputStreamWriter(bos, 
"UTF-8");
                        BufferedWriter bw = new BufferedWriter(osw);
                        SimpleFieldSet fs = getFieldset(bootID);
                        fs.writeTo(bw);
                        bw.close();
+                       fos = null;
                        dataBak.renameTo(data);
                } catch (IOException e) {
                        Logger.error(this, "Cannot store packet tracker to 
disk");
                        return;
+               } finally {
+                       if(fos != null)
+                               try {
+                                       fos.close();
+                               } catch (IOException e) {
+                                       // Ignore
+                               }
                }
        }



Reply via email to