aboutsummaryrefslogtreecommitdiffstats
path: root/sdkmanager/libs/sdklib
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2012-05-30 16:06:03 -0700
committerTor Norbye <tnorbye@google.com>2012-05-30 17:33:18 -0700
commit547c7761208632134d33eace29c81a4e60cd0a69 (patch)
tree84ae7260854779022d621ae2e3001ab351244105 /sdkmanager/libs/sdklib
parent7e4b8e9d595e45baa9d87cdb8282f02759e73abc (diff)
downloadsdk-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')
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/build/JarListSanitizer.java21
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/internal/avd/HardwareProperties.java11
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/internal/project/ProjectCreator.java11
-rw-r--r--sdkmanager/libs/sdklib/tests/src/com/android/sdklib/mock/MockLog.java4
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