diff --git a/ChangeLog b/ChangeLog
index 93de95a7d7068bcb0fc29c1d445fe2bfb760f2af..4642beb2e4e13b9145726f8032f75cb5789892f0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,10 @@ CVS code -
 	  nulls. (DLR)
   write_file()
 	- Properly handle filenames that contain nulls. (DLR)
+  do_writeout()
+	- Fix a segfault when we can't get the full path of either the
+	  filename we want to save under or the original filename. (DLR,
+	  found by Mike Frysinger)
 - nano.h:
 	- Rename NANO_ALT_REPLACE_KEY to NANO_REPLACE_ALTKEY, for
 	  consistency. (DLR)
diff --git a/src/files.c b/src/files.c
index 10e069eb7a5e9f610dd1771de4896357da2746c6..b83e6596b3fc806e4f4dc6887ba9e42a00e10042 100644
--- a/src/files.c
+++ b/src/files.c
@@ -1897,7 +1897,8 @@ int do_writeout(bool exiting)
 		unsunder(answer, answer_len);
 
 		full_filename = get_full_path(openfile->filename);
-		different_name = (strcmp(full_answer,
+		different_name = (full_answer != NULL &&
+			full_filename != NULL && strcmp(full_answer,
 			full_filename) != 0);
 
 		free(full_filename);