langtools/src/share/classes/com/sun/tools/javap/JavapTask.java
changeset 3784 182e4a28c0ce
parent 3548 fd92f0d28cb9
child 3890 b53fced26fa4
--- a/langtools/src/share/classes/com/sun/tools/javap/JavapTask.java	Tue Sep 08 11:29:58 2009 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javap/JavapTask.java	Tue Sep 08 11:43:57 2009 -0700
@@ -455,8 +455,19 @@
                     return EXIT_CMDERR;
             }
 
-            boolean ok = run();
-            return ok ? EXIT_OK : EXIT_ERROR;
+            try {
+                boolean ok = run();
+                return ok ? EXIT_OK : EXIT_ERROR;
+            } finally {
+                if (defaultFileManager != null) {
+                    try {
+                        defaultFileManager.close();
+                        defaultFileManager = null;
+                    } catch (IOException e) {
+                        throw new InternalError(e);
+                    }
+                }
+            }
         } catch (BadArgs e) {
             reportError(e.key, e.args);
             if (e.showUsage) {
@@ -856,7 +867,9 @@
     }
 
     private JavaFileManager getDefaultFileManager(final DiagnosticListener<? super JavaFileObject> dl, PrintWriter log) {
-        return JavapFileManager.create(dl, log);
+        if (defaultFileManager == null)
+            defaultFileManager = JavapFileManager.create(dl, log);
+        return defaultFileManager;
     }
 
     private JavaFileObject getClassFileObject(String className) throws IOException {
@@ -1004,6 +1017,7 @@
 
     protected Context context;
     JavaFileManager fileManager;
+    JavaFileManager defaultFileManager;
     PrintWriter log;
     DiagnosticListener<? super JavaFileObject> diagnosticListener;
     List<String> classes;