From 27f212f3ec5b7fe73b261783ed13fe411b108b25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Mart=C3=AD?= <mvdan@mvdan.cc>
Date: Thu, 10 Sep 2015 19:24:52 -0700
Subject: [PATCH] Use Writer, always close FileWriter exactly once

---
 .../org/fdroid/fdroid/localrepo/LocalRepoManager.java    | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/F-Droid/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java b/F-Droid/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java
index 7fe1eeb5d..045789cd4 100644
--- a/F-Droid/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java
+++ b/F-Droid/src/org/fdroid/fdroid/localrepo/LocalRepoManager.java
@@ -345,12 +345,11 @@ public class LocalRepoManager {
             serializer = XmlPullParserFactory.newInstance().newSerializer();
         }
 
-        public void build(FileWriter output) throws IOException, LocalRepoKeyStore.InitException {
+        public void build(Writer output) throws IOException, LocalRepoKeyStore.InitException {
             serializer.setOutput(output);
             serializer.startDocument(null, null);
             tagFdroid();
             serializer.endDocument();
-            output.close();
         }
 
         private void tagFdroid() throws IOException, LocalRepoKeyStore.InitException {
@@ -486,8 +485,7 @@ public class LocalRepoManager {
 
     public void writeIndexJar() throws IOException {
 
-        FileWriter writer;
-
+        FileWriter writer = null;
         try {
             writer = new FileWriter(xmlIndex);
             new IndexXmlBuilder(context, apps).build(writer);
@@ -495,6 +493,8 @@ public class LocalRepoManager {
             Log.e(TAG, "Could not write index jar", e);
             Toast.makeText(context, R.string.failed_to_create_index, Toast.LENGTH_LONG).show();
             return;
+        } finally {
+            Utils.closeQuietly(writer);
         }
 
         BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(xmlIndexJarUnsigned));
@@ -515,7 +515,6 @@ public class LocalRepoManager {
         bi.close();
         jo.close();
         bo.close();
-        writer.close();
 
         try {
             LocalRepoKeyStore.get(context).signZip(xmlIndexJarUnsigned, xmlIndexJar);