diff --git a/ChangeLog b/ChangeLog
index 332fcba69c5d74f81fdf545b478155fc0ad4766b..41a587100819369c5164061e156755f88237cb09 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,7 @@
 	* AUTHORS, THANKS: Remove SVN Id tags and a duplication.
 	* src/winio.c (get_kbinput), src/nano.c (main): Switch the cursor on
 	in the right place: in the central input routine.
+	* src/files.c (load_poshistory): Free any records that are dropped.
 
 2016-02-09  Benno Schulenberg  <bensberg@justemail.net>
 	* src/files.c (stat_with_alloc, open_buffer, write_file): Check the
diff --git a/src/files.c b/src/files.c
index e68e81c13e31a3ee14e074035de52584476e47f1..c16b9272fe830d2e532af62a870c0f95fafecde4 100644
--- a/src/files.c
+++ b/src/files.c
@@ -3323,8 +3323,14 @@ void load_poshistory(void)
 	    record_ptr = newrecord;
 
 	    /* Impose a limit, so the file will not grow indefinitely. */
-	    if (++count > 200)
+	    if (++count > 200) {
+		poshiststruct *drop_record = position_history;
+
 		position_history = position_history->next;
+
+		free(drop_record->filename);
+		free(drop_record);
+	    }
 	}
 	fclose(hist);
 	free(line);