diff --git a/ChangeLog b/ChangeLog
index 941417ad0833f8f3b10ff3b5fb53b97381b0359e..7ff6b107998ab39a0e4680a240b405393f36dc06 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2016-02-11  Benno Schulenberg  <bensberg@justemail.net>
+	* src/text.c (do_linter): Go to the next item in the list before
+	freeing the current one.  This fixes Savannah bug #46796.
+
 2016-02-10  Benno Schulenberg  <bensberg@justemail.net>
 	* src/text.c (discard_until): Prevent a chain of editing actions from
 	continuing after a discard.  This fixes Savannah bug #47104.
diff --git a/src/text.c b/src/text.c
index b1cff4822df6d53eb2baa026a702ec7df35679b6..6cec943021062bde26006d55f328fe5e26b32ae1 100644
--- a/src/text.c
+++ b/src/text.c
@@ -3198,7 +3198,9 @@ void do_linter(void)
 #ifndef NANO_TINY
   free_lints_and_return:
 #endif
-    for (tmplint = lints; tmplint != NULL; tmplint = tmplint->next) {
+    for (curlint = lints; curlint != NULL;) {
+	tmplint = curlint;
+	curlint = curlint->next;
 	free(tmplint->msg);
 	free(tmplint->filename);
 	free(tmplint);