From ca92becf9dda2b0dcebb60d32f9a9d4a35f9500c Mon Sep 17 00:00:00 2001
From: David Lawrence Ramsey <pooka109@gmail.com>
Date: Fri, 22 Oct 2004 03:33:54 +0000
Subject: [PATCH] apply patch from DB: in write_file(), if we've tried to write
 to an unwritable file and we're not prepending, tempname is NULL when it's
 passed to unlink(); this can cause problems if unlink() can't handle NULL, so
 don't call it in that case

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2012 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
---
 ChangeLog   | 5 +++++
 src/files.c | 4 +++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 670f5c17..7e03e593 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -109,6 +109,11 @@ CVS code -
   do_writeout_void()
 	- Call display_main_list(), for consistency with
 	  do_insertfile_void(). (DLR)
+  write_file()
+	- If we've tried to write to an unwritable file and we're not
+	  prepending, tempname is NULL when it's passed to unlink().
+	  This can cause problems if unlink() can't handle NULL, so
+	  don't call it in that case. (David Benbennick)
   write_marked()
 	- Remove check for MARK_ISSET's not being set. (DLR)
   open_prevfile(), open_nextfile()
diff --git a/src/files.c b/src/files.c
index 72b84a47..cc0bf201 100644
--- a/src/files.c
+++ b/src/files.c
@@ -1602,7 +1602,9 @@ int write_file(const char *name, int tmp, int append, int nonamechange)
     /* First, just give up if we couldn't even open the file. */
     if (fd == -1) {
 	statusbar(_("Error writing %s: %s"), realname, strerror(errno));
-	unlink(tempname);
+	/* tempname has been set only if we're prepending. */
+	if (tempname != NULL)
+	    unlink(tempname);
 	goto cleanup_and_exit;
     }
 
-- 
GitLab