# HG changeset patch
# User thartmann
# Date 1416985618 -3600
# Node ID e6f02d6fee4478acbd8ae05709f8973498de373c
# Parent  8a8710cb8fc45ec17a378578557aeca50737879f
8007993: hotspot.log w/ enabled LogCompilation can be an invalid XML
Summary: Open compilation log files in write-mode and close before deletion attempt.
Reviewed-by: vlivanov

diff -r 8a8710cb8fc4 -r e6f02d6fee44 hotspot/src/share/vm/compiler/compileBroker.cpp
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp	Thu Nov 13 09:19:46 2014 +0100
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp	Wed Nov 26 08:06:58 2014 +0100
@@ -1807,7 +1807,7 @@
                      os::file_separator(), thread_id, os::current_process_id());
       }
 
-      fp = fopen(file_name, "at");
+      fp = fopen(file_name, "wt");
       if (fp != NULL) {
         if (LogCompilation && Verbose) {
           tty->print_cr("Opening compilation log %s", file_name);
diff -r 8a8710cb8fc4 -r e6f02d6fee44 hotspot/src/share/vm/compiler/compileLog.cpp
--- a/hotspot/src/share/vm/compiler/compileLog.cpp	Thu Nov 13 09:19:46 2014 +0100
+++ b/hotspot/src/share/vm/compiler/compileLog.cpp	Wed Nov 26 08:06:58 2014 +0100
@@ -56,8 +56,10 @@
 }
 
 CompileLog::~CompileLog() {
-  delete _out;
+  delete _out; // Close fd in fileStream::~fileStream()
   _out = NULL;
+  // Remove partial file after merging in CompileLog::finish_log_on_error
+  unlink(_file);
   FREE_C_HEAP_ARRAY(char, _identities, mtCompiler);
   FREE_C_HEAP_ARRAY(char, _file, mtCompiler);
 }
@@ -278,10 +280,9 @@
       }
       file->print_raw_cr("</compilation_log>");
       close(partial_fd);
-      unlink(partial_file);
     }
     CompileLog* next_log = log->_next;
-    delete log;
+    delete log; // Removes partial file
     log = next_log;
   }
   _first = NULL;