diff --git a/user/src/com/google/gwt/junit/server/JUnitHostImpl.java b/user/src/com/google/gwt/junit/server/JUnitHostImpl.java
index 8db688e..91bc3f1 100644
--- a/user/src/com/google/gwt/junit/server/JUnitHostImpl.java
+++ b/user/src/com/google/gwt/junit/server/JUnitHostImpl.java
@@ -218,13 +218,17 @@
     BufferedReader bin = new BufferedReader(new InputStreamReader(in));
     String line;
     try {
-      while ((line = bin.readLine()) != null) {
-        if (line.charAt(0) == '#') {
-          continue;
+      try {
+        while ((line = bin.readLine()) != null) {
+          if (line.charAt(0) == '#') {
+            continue;
+          }
+          int idx = line.indexOf(',');
+          toReturn.put(new SymbolName(line.substring(0, idx)),
+                       line.substring(idx + 1));
         }
-        int idx = line.indexOf(',');
-        toReturn.put(new SymbolName(line.substring(0, idx)),
-            line.substring(idx + 1));
+      } finally {
+        bin.close();
       }
     } catch (IOException e) {
       toReturn = null;
diff --git a/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java b/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
index 0f35748..46b3694 100644
--- a/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
+++ b/user/src/com/google/gwt/logging/server/StackTraceDeobfuscator.java
@@ -123,15 +123,20 @@
     toReturn = new SymbolMap();
     String line;
     String filename = symbolMapsDirectory + strongName + ".symbolMap";
+
     try {
       BufferedReader bin = new BufferedReader(new FileReader(filename));
-      while ((line = bin.readLine()) != null) {
-        if (line.charAt(0) == '#') {
-          continue;
+      try {
+        while ((line = bin.readLine()) != null) {
+          if (line.charAt(0) == '#') {
+            continue;
+          }
+          int idx = line.indexOf(',');
+          toReturn.put(new String(line.substring(0, idx)),
+                       line.substring(idx + 1));
         }
-        int idx = line.indexOf(',');
-        toReturn.put(new String(line.substring(0, idx)),
-            line.substring(idx + 1));
+      } finally {
+        bin.close();
       }
     } catch (IOException e) {
       toReturn = null;
