diff options
author | Mark Mitchell <mark@codesourcery.com> | 2002-05-14 00:04:54 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 2002-05-14 00:04:54 +0000 |
commit | 2f9a2cd769e940b7d6e7d256c6b24f314d6d00ae (patch) | |
tree | 432c8db6c62c88d67202af21b4700a36047ce858 /gcc/java/jcf-write.c | |
parent | 546c093ec5f84f1659723329061c47070a9956ef (diff) | |
download | gcc-2f9a2cd769e940b7d6e7d256c6b24f314d6d00ae.zip gcc-2f9a2cd769e940b7d6e7d256c6b24f314d6d00ae.tar.gz gcc-2f9a2cd769e940b7d6e7d256c6b24f314d6d00ae.tar.bz2 |
jcf-write.c (write_classfile): Unlink the temporary file if it cannot be renamed.
* jcf-write.c (write_classfile): Unlink the temporary file if it
cannot be renamed. Use concat to build up the name of the
temporary file
From-SVN: r53439
Diffstat (limited to 'gcc/java/jcf-write.c')
-rw-r--r-- | gcc/java/jcf-write.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c index 62e3e09..491b561 100644 --- a/gcc/java/jcf-write.c +++ b/gcc/java/jcf-write.c @@ -3380,9 +3380,7 @@ write_classfile (clas) /* The .class file is initially written to a ".tmp" file so that if multiple instances of the compiler are running at once they do not see partially formed class files. */ - temporary_file_name = xmalloc (strlen (class_file_name) - + strlen (".tmp") + 1); - sprintf (temporary_file_name, "%s.tmp", class_file_name); + temporary_file_name = concat (class_file_name, ".tmp", NULL); stream = fopen (temporary_file_name, "wb"); if (stream == NULL) fatal_io_error ("can't open %s for writing", temporary_file_name); @@ -3394,7 +3392,10 @@ write_classfile (clas) if (fclose (stream)) fatal_io_error ("error closing %s", temporary_file_name); if (rename (temporary_file_name, class_file_name) == -1) - fatal_io_error ("can't create %s", class_file_name); + { + remove (temporary_file_name); + fatal_io_error ("can't create %s", class_file_name); + } free (temporary_file_name); free (class_file_name); } |