diff --git a/ChangeLog b/ChangeLog
index 53fca6fee598092d847aeaf45d95d6c6fcfdbbc5..a3b769b522aa7ec147e6ac390d5a51d04990ee55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
 2015-08-11  Benno Schulenberg  <bensberg@justemail.net>
 	* src/files.c (write_file): Avoid calling copy_file() with a null
 	pointer.  Found with cppcheck.
+	* src/files.c (write_file): A failure to delete the temporary file
+	does not mean that it wasn't copied properly.
 
 2015-08-09  Benno Schulenberg  <bensberg@justemail.net>
 	* src/global.c, src/help.c (help_init), src/nano.c (do_toggle, main),
diff --git a/src/files.c b/src/files.c
index 5f95ae32d9ce65aa3b65b1771a57d919d114ffdb..c93ef39cc153d46958f7c2f199d10067a3ea64fb 100644
--- a/src/files.c
+++ b/src/files.c
@@ -1719,7 +1719,7 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
     FILE *f = NULL;
 	/* The actual file, realname, we are writing to. */
     char *tempname = NULL;
-	/* The temp file name we write to on prepend. */
+	/* The name of the temporary file we write to on prepend. */
 
     assert(name != NULL);
 
@@ -2122,11 +2122,13 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
 	    goto cleanup_and_exit;
 	}
 
-	if (copy_file(f_source, f) == -1 || unlink(tempname) == -1) {
+	if (copy_file(f_source, f) == -1) {
 	    statusbar(_("Error writing %s: %s"), realname,
 		strerror(errno));
 	    goto cleanup_and_exit;
 	}
+
+	unlink(tempname);
     } else if (fclose(f) != 0) {
 	    statusbar(_("Error writing %s: %s"), realname,
 		strerror(errno));