nnn.c | 9 +++++++-- diff --git a/nnn.c b/nnn.c index 95a0edc4149f83ad25e3992c726d3bdb7ea0ddbb..402ee5820b54a9ac61b99e6cd200fc9d65c41812 100644 --- a/nnn.c +++ b/nnn.c @@ -908,10 +908,13 @@ for (i = 0; i < len; ++i) { if (regcomp(®ex, assocs[i].regex, REG_NOSUB | REG_EXTENDED | REG_ICASE) != 0) continue; - if (regexec(®ex, file, 0, NULL, 0) == 0) + if (regexec(®ex, file, 0, NULL, 0) == 0) { + regfree(®ex); return assocs[i].mime; + } } + regfree(®ex); return NULL; } @@ -1080,6 +1083,8 @@ if (setfilter(&re, fltr) != 0) return -1; fill(&dents, visible, &re); + regfree(&re); + qsort(dents, ndents, sizeof(*dents), entrycmp); return 0; @@ -2218,6 +2223,7 @@ clock_gettime(CLOCK_REALTIME, &ts1); /* Use CLOCK_MONOTONIC on FreeBSD */ #endif ndents = dentfill(path, &dents, visible, &re); + regfree(&re); qsort(dents, ndents, sizeof(*dents), entrycmp); @@ -2228,7 +2234,6 @@ #endif /* Find cur from history */ cur = dentfind(dents, oldname, ndents); - regfree(&re); return 0; }