From 818a39cfb977dfc4f2050a3cf042d253c65e2700 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Mon, 22 Feb 2016 09:34:33 +0000 Subject: [PATCH] Condensing some code by factoring out a repetition. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5659 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 1 + src/global.c | 39 +++++++++++++++++---------------------- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index 31676ccf..472e8cdc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ 2016-02-22 Benno Schulenberg * 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 * 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 35d8c518..06cde108 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 */