From 2070d3a26fe3d91432d30e371ecc886402a131f8 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Fri, 4 Mar 2016 14:53:45 +0000 Subject: [PATCH] Not bothering to keep the compiled regular expression when it matched. Stopping instead to call malloc() pointlessly. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@5706 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 5 +++++ src/color.c | 19 ++++++------------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5700aab8..85d56b28 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2016-03-04 Benno Schulenberg + * src/color.c (found_in_list): Don't bother keeping the compiled + regular expression when it matched -- drop this tiny optimization + for when opening multiple files. Instead stop calling malloc(). + 2016-03-01 Benno Schulenberg * src/rcfile.c (parse_syntax), src/color.c (color_update): Don't bother discarding a duplicate syntax (it's too rare, saves little diff --git a/src/color.c b/src/color.c index 438ebc8d..e127e7ba 100644 --- a/src/color.c +++ b/src/color.c @@ -144,24 +144,17 @@ void color_init(void) bool found_in_list(regexlisttype *head, const char *shibboleth) { regexlisttype *item; - bool not_compiled; + regex_t rgx; for (item = head; item != NULL; item = item->next) { - not_compiled = (item->rgx == NULL); + regcomp(&rgx, fixbounds(item->full_regex), REG_EXTENDED); - if (not_compiled) { - item->rgx = (regex_t *)nmalloc(sizeof(regex_t)); - regcomp(item->rgx, fixbounds(item->full_regex), REG_EXTENDED); - } - - if (regexec(item->rgx, shibboleth, 0, NULL, 0) == 0) + if (regexec(&rgx, shibboleth, 0, NULL, 0) == 0) { + regfree(&rgx); return TRUE; - - if (not_compiled) { - regfree(item->rgx); - free(item->rgx); - item->rgx = NULL; } + + regfree(&rgx); } return FALSE; -- 2.39.5