changeset 2688:b0b7c051d199

8062504: javadoc Start does not close file managers that it opens Reviewed-by: ksrini
author jjg
date Wed, 29 Oct 2014 18:01:22 -0700
parents 56f8be952a5c
children f839b50088bc
files src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Start.java
diffstat 1 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Start.java	Wed Oct 29 17:25:23 2014 -0700
+++ b/src/jdk.javadoc/share/classes/com/sun/tools/javadoc/Start.java	Wed Oct 29 18:01:22 2014 -0700
@@ -88,6 +88,9 @@
      */
     private boolean apiMode;
 
+    private JavaFileManager fileManager;
+    private boolean closeFileManagerOnExit;
+
     Start(String programName,
           PrintWriter errWriter,
           PrintWriter warnWriter,
@@ -239,6 +242,12 @@
             messager.error(Messager.NOPOS, "main.fatal.exception");
             failed = true;
         } finally {
+            if (fileManager != null && closeFileManagerOnExit) {
+                try {
+                    fileManager.close();
+                } catch (IOException ignore) {
+                }
+            }
             messager.exitNotice();
             messager.flush();
         }
@@ -270,7 +279,8 @@
         }
 
 
-        JavaFileManager fileManager = context.get(JavaFileManager.class);
+        fileManager = context.get(JavaFileManager.class);
+
         setDocletInvoker(docletClass, fileManager, argv);
 
         compOpts = Options.instance(context);
@@ -333,6 +343,7 @@
         if (fileManager == null) {
             JavacFileManager.preRegister(context);
             fileManager = context.get(JavaFileManager.class);
+            closeFileManagerOnExit = true;
         }
         if (fileManager instanceof BaseFileManager) {
             ((BaseFileManager) fileManager).handleOptions(fileManagerOpts);