commit 2d4debc

sewn  ·  2026-10-04 20:07:51 +0000 UTC
parent d6f85bf
free namelist after choosing path
1 files changed,  +4, -3
M wawa.c
M wawa.c
+4, -3
 1@@ -433,7 +433,7 @@ mode:
 2 		else if (!strcmp(mode, "fill")) image_modify = image_fill;
 3 		else if (!strcmp(mode, "tile")) image_modify = image_tile;
 4 		else if (!strcmp(mode, "spread")) image_modify = image_spread;
 5-		else if (!namelist) goto usage;
 6+		else if (!dirn) goto usage;
 7 		else goto prescan;
 8 
 9 file:
10@@ -443,10 +443,11 @@ file:
11 			srand((intptr_t)path | (unsigned int)time(NULL));
12 scan:
13 			if (chdir(path) < 0) die("chdir:"); // slower & easier than strncpy PATH_MAX
14-			if (namelist) free(namelist);
15 			if ((dirn = scandir(".", &namelist, NULL, alphasort)) < 0) die("scandir:");
16 			if (dirn < 3) die("no images");
17 			name = namelist[2 + rand() % (dirn - 2)];
18+			while (dirn--) if (namelist[dirn] != name) free(namelist[dirn]);
19+			free(namelist);
20 			mode = basename((path = name->d_name));
21 			if (argc == 2) goto mode;
22 prescan:
23@@ -454,7 +455,7 @@ prescan:
24 		}
25 
26 		if (!(image.fp = fopen(path, "rb"))) die("fopen %s:", path);
27-		if (namelist) free(namelist);
28+		if (dirn) free(path);
29 		break;
30 	default:
31 		goto usage;