diff options
author | Tor Norbye <tnorbye@google.com> | 2012-05-30 16:06:03 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2012-05-30 17:33:18 -0700 |
commit | 547c7761208632134d33eace29c81a4e60cd0a69 (patch) | |
tree | 84ae7260854779022d621ae2e3001ab351244105 /sdkmanager/libs/sdklib | |
parent | 7e4b8e9d595e45baa9d87cdb8282f02759e73abc (diff) | |
download | sdk-547c7761208632134d33eace29c81a4e60cd0a69.zip sdk-547c7761208632134d33eace29c81a4e60cd0a69.tar.gz sdk-547c7761208632134d33eace29c81a4e60cd0a69.tar.bz2 |
Fix "Resource leak: <Foo> is never closed"
This changeset fixes various code fragments opening
resources without closing them.
Change-Id: I6ed48a32dc5de4c11cab394dd3883ebbb54d2938
Diffstat (limited to 'sdkmanager/libs/sdklib')
4 files changed, 40 insertions, 7 deletions
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/build/JarListSanitizer.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/build/JarListSanitizer.java index fa7b00b..4d1dcdb 100644 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/build/JarListSanitizer.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/build/JarListSanitizer.java @@ -435,10 +435,11 @@ public class JarListSanitizer { */ private static String getSha1(File f) throws Sha1Exception { synchronized (sBuffer) { + FileInputStream fis = null; try { MessageDigest md = MessageDigest.getInstance("SHA-1"); - FileInputStream fis = new FileInputStream(f); + fis = new FileInputStream(f); while (true) { int length = fis.read(sBuffer); if (length > 0) { @@ -452,15 +453,27 @@ public class JarListSanitizer { } catch (Exception e) { throw new Sha1Exception(f, e); + } finally { + if (fis != null) { + try { + fis.close(); + } catch (IOException e) { + // ignore + } + } } } } private static String byteArray2Hex(final byte[] hash) { Formatter formatter = new Formatter(); - for (byte b : hash) { - formatter.format("%02x", b); + try { + for (byte b : hash) { + formatter.format("%02x", b); + } + return formatter.toString(); + } finally { + formatter.close(); } - return formatter.toString(); } } diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/HardwareProperties.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/HardwareProperties.java index c2c9bed..88495e0 100644 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/HardwareProperties.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/HardwareProperties.java @@ -121,9 +121,10 @@ public class HardwareProperties { * @return the map of (key,value) pairs, or null if the parsing failed. */ public static Map<String, HardwareProperty> parseHardwareDefinitions(File file, ISdkLog log) { + BufferedReader reader = null; try { FileInputStream fis = new FileInputStream(file); - BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); + reader = new BufferedReader(new InputStreamReader(fis)); Map<String, HardwareProperty> map = new TreeMap<String, HardwareProperty>(); @@ -173,6 +174,14 @@ public class HardwareProperties { } catch (IOException e) { log.warning("Error parsing '%1$s': %2$s.", file.getAbsolutePath(), e.getMessage()); + } finally { + if (reader != null) { + try { + reader.close(); + } catch (IOException e) { + // ignore + } + } } return null; diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/project/ProjectCreator.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/project/ProjectCreator.java index 721d165..f01c63a 100644 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/project/ProjectCreator.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/project/ProjectCreator.java @@ -929,8 +929,9 @@ public class ProjectCreator { private Matcher checkFileContainsRegexp(File file, String regexp) { Pattern p = Pattern.compile(regexp); + BufferedReader in = null; try { - BufferedReader in = new BufferedReader(new FileReader(file)); + in = new BufferedReader(new FileReader(file)); String line; while ((line = in.readLine()) != null) { @@ -943,6 +944,14 @@ public class ProjectCreator { in.close(); } catch (Exception e) { // ignore + } finally { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + // ignore + } + } } return null; diff --git a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/mock/MockLog.java b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/mock/MockLog.java index 24b120f..95a2693 100644 --- a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/mock/MockLog.java +++ b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/mock/MockLog.java @@ -32,7 +32,9 @@ public class MockLog implements ISdkLog { private ArrayList<String> mMessages = new ArrayList<String>(); private void add(String code, String format, Object... args) { - mMessages.add(new Formatter().format(code + format, args).toString()); + Formatter formatter = new Formatter(); + mMessages.add(formatter.format(code + format, args).toString()); + formatter.close(); } @Override |