diff --git a/ChangeLog b/ChangeLog
index 31676ccf02aab027f9fc964d6f9bb8881863157b..472e8cdcf5b7415ce5bcea84f1c2f923b57124e6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 2016-02-22  Benno Schulenberg  <bensberg@justemail.net>
 	* src/nano.c (free_openfilestruct): Elide this function.
+	* scr/global.c (thanks_for_all_the_fish, free_list_item): Condense.
 
 2016-02-21  Benno Schulenberg  <bensberg@justemail.net>
 	* src/files.c (input_tab): If the first Tab added the part that all
diff --git a/src/global.c b/src/global.c
index 35d8c518245e4de6d89f7500cb81039491544e4a..06cde108e2d13563ff71c283d211892fb3faba91 100644
--- a/src/global.c
+++ b/src/global.c
@@ -1623,6 +1623,17 @@ int strtomenu(const char *input)
 
 
 #ifdef DEBUG
+#ifndef DISABLE_COLOR
+void free_list_item(regexlisttype *dropit)
+{
+    free(dropit->ext_regex);
+    if (dropit->ext != NULL)
+	regfree(dropit->ext);
+    free(dropit->ext);
+    free(dropit);
+}
+#endif
+
 /* This function is used to gracefully return all the memory we've used.
  * It should be called just before calling exit().  Practically, the
  * only effect is to cause a segmentation fault if the various data
@@ -1672,47 +1683,32 @@ void thanks_for_all_the_fish(void)
 	free(syntaxes->desc);
 	free(syntaxes->linter);
 	free(syntaxes->formatter);
+
 	while (syntaxes->extensions != NULL) {
 	    regexlisttype *bob = syntaxes->extensions;
 	    syntaxes->extensions = bob->next;
-	    free(bob->ext_regex);
-	    if (bob->ext != NULL) {
-		regfree(bob->ext);
-		free(bob->ext);
-	    }
-	    free(bob);
+	    free_list_item(bob);
 	}
 	while (syntaxes->headers != NULL) {
 	    regexlisttype *bob = syntaxes->headers;
 	    syntaxes->headers = bob->next;
-	    free(bob->ext_regex);
-	    if (bob->ext != NULL) {
-		regfree(bob->ext);
-		free(bob->ext);
-	    }
-	    free(bob);
+	    free_list_item(bob);
 	}
 	while (syntaxes->magics != NULL) {
 	    regexlisttype *bob = syntaxes->magics;
 	    syntaxes->magics = bob->next;
-	    free(bob->ext_regex);
-	    if (bob->ext != NULL) {
-		regfree(bob->ext);
-		free(bob->ext);
-	    }
-	    free(bob);
+	    free_list_item(bob);
 	}
+
 	while (syntaxes->color != NULL) {
 	    colortype *bob = syntaxes->color;
-
 	    syntaxes->color = bob->next;
 	    free(bob->start_regex);
 	    if (bob->start != NULL) {
 		regfree(bob->start);
 		free(bob->start);
 	    }
-	    if (bob->end_regex != NULL)
-		free(bob->end_regex);
+	    free(bob->end_regex);
 	    if (bob->end != NULL) {
 		regfree(bob->end);
 		free(bob->end);
@@ -1744,5 +1740,4 @@ void thanks_for_all_the_fish(void)
     free(homedir);
 #endif
 }
-
 #endif /* DEBUG */