From ed4a91bcc1d68c26cd533c4432f93c799b1771c2 Mon Sep 17 00:00:00 2001 From: "@syxhe" Date: Thu, 17 Apr 2025 15:36:28 -0500 Subject: Slight improvement to scandirlist function to properly free memory on error --- src/main.c | 9 +-------- src/scanner.c | 4 ++++ 2 files changed, 5 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index d5e90c9..3779206 100644 --- a/src/main.c +++ b/src/main.c @@ -22,13 +22,6 @@ int printnames(void *data) { return 0; } int main() { - // error(1, ENOTSUP, "No main file lol"); - - // Test code to showcase the scanner function - - dlinkedlist *ll = scandirlist(".", lol, alphasort); - dlinkedlist_foreach(ll, printnames); - dlinkedlist_free(ll); - + error(1, ENOTSUP, "No main file lol"); return 0; } \ No newline at end of file diff --git a/src/scanner.c b/src/scanner.c index 7c65df4..1c4d2b1 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -22,6 +22,10 @@ dlinkedlist * scandirlist(const char * const dir, int (*selector)(const struct d for(int i = 0; i < numentries; i++) if(dlinkedlist_append(list, (void *)(namelist[i]), free) < 0) { dlinkedlist_free(list); + for(int j = i; j < numentries; j++) + free(namelist[j]); + + free(namelist); RETURNWERR(errno, NULL); } free(namelist); -- cgit v1.2.3