diff --git a/ChangeLog b/ChangeLog
index 448e93a6df6bb245819612664e87267b61dc38e5..cb9127c9f5e1aa30836e43d003b1e0390f41ae76 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,8 @@
 	first_file() and last_file().  Also unbind some other useless keys.
 	* src/browser.c (filesearch_init): Remove an unused variable, and
 	adjust the introductory comment for the recently tweaked logic.
+	* src/rcfile.c (parse_linter, parse_formatter): Use mallocstrcpy()
+	in a correct manner; don't let it free an unrelated string.
 
 2015-04-11  Benno Schulenberg  <bensberg@justemail.net>
 	* src/search.c (do_replace_loop): Do not split off the marked region
diff --git a/src/rcfile.c b/src/rcfile.c
index d8baeca0f884bdee03b54e652b3775f1d7dee566..581456de5490438fb6851be2e663d59a55ade75b 100644
--- a/src/rcfile.c
+++ b/src/rcfile.c
@@ -992,7 +992,7 @@ void parse_linter(char *ptr)
     if (!strcmp(ptr, "\"\""))
 	endsyntax->linter = NULL;
     else
-	endsyntax->linter = mallocstrcpy(syntaxes->linter, ptr);
+	endsyntax->linter = mallocstrcpy(NULL, ptr);
 }
 
 #ifndef DISABLE_SPELLER
@@ -1019,7 +1019,7 @@ void parse_formatter(char *ptr)
     if (!strcmp(ptr, "\"\""))
 	endsyntax->formatter = NULL;
     else
-	endsyntax->formatter = mallocstrcpy(syntaxes->formatter, ptr);
+	endsyntax->formatter = mallocstrcpy(NULL, ptr);
 }
 #endif /* !DISABLE_SPELLER */
 #endif /* !DISABLE_COLOR */