diff --git a/nnn.c b/nnn.c index 0aa375a6..52176370 100644 --- a/nnn.c +++ b/nnn.c @@ -460,7 +460,7 @@ static void *xrealloc(void *pcur, size_t len) static void *pmem; pmem = realloc(pcur, len); - if (!pmem && pcur) + if (!pmem) free(pcur); return pmem; @@ -2081,6 +2081,12 @@ static int sum_sizes(const char *fpath, const struct stat *sb, return 0; } +static void dentfree(struct entry *dents) +{ + free(pnamebuf); + free(dents); +} + static int dentfill(char *path, struct entry **dents, int (*filter)(regex_t *, char *), regex_t *re) { @@ -2238,22 +2244,13 @@ static int dentfill(char *path, struct entry **dents, /* Should never be null */ if (closedir(dirp) == -1) { - if (*dents) { - free(pnamebuf); - free(*dents); - } + dentfree(*dents); errexit(); } return n; } -static void dentfree(struct entry *dents) -{ - free(pnamebuf); - free(dents); -} - /* Return the position of the matching entry or 0 otherwise */ static int dentfind(struct entry *dents, const char *fname, int n) { @@ -2887,8 +2884,7 @@ nochange: mkpath(path, dents[cur].name, newpath, PATH_MAX); if (lstat(newpath, &sb) == -1) { - if (dents) - dentfree(dents); + dentfree(dents); errexit(); }