diff --git a/src/files.c b/src/files.c
index 4ba2e4e928682a15c4fe3a3e4da02c7fa39edddd..d67e278474c2bdf97c6577d64edead27fc24ddda 100644
--- a/src/files.c
+++ b/src/files.c
@@ -2780,6 +2780,11 @@ void load_history(void)
     char *nanohist = histfilename();
     char *legacyhist = legacyhistfilename();
     struct stat hstat;
+    FILE *hist;
+
+    /* If no home directory was found, we can't do anything. */
+    if (nanohist == NULL || legacyhist == NULL)
+	return;
 
     /* If there is an old history file, migrate it. */
     /* (To be removed in 2018.) */
@@ -2794,13 +2799,11 @@ void load_history(void)
 				legacyhist, nanohist);
     }
 
-    /* Assume do_rcfile() has reported a missing home directory. */
-    if (nanohist != NULL) {
-	FILE *hist = fopen(nanohist, "rb");
+    hist = fopen(nanohist, "rb");
 
 	if (hist == NULL) {
 	    if (errno != ENOENT) {
-		/* Don't save history when we quit. */
+		/* When reading failed, don't save history when we quit. */
 		UNSET(HISTORYLOG);
 		history_error(N_("Error reading %s: %s"), nanohist,
 			strerror(errno));
@@ -2827,9 +2830,9 @@ void load_history(void)
 	    fclose(hist);
 	    free(line);
 	}
+
 	free(nanohist);
 	free(legacyhist);
-    }
 }
 
 /* Write the lines of a history list, starting with the line at head, to