util/disk_cache: fix bug with deleting old cache dirs
If there was more than a single directory in the .cache/mesa dir then it would only remove one (or none) of the directories. Apparently Valgrind was also reporting: Conditional jump or move depends on uninitialised value Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
This commit is contained in:
parent
8e03250fcf
commit
d258055c8b
|
@ -152,17 +152,19 @@ remove_old_cache_directories(void *mem_ctx, char *path, const char *timestamp)
|
||||||
struct dirent* d_entry;
|
struct dirent* d_entry;
|
||||||
while((d_entry = readdir(dir)) != NULL)
|
while((d_entry = readdir(dir)) != NULL)
|
||||||
{
|
{
|
||||||
|
char *full_path =
|
||||||
|
ralloc_asprintf(mem_ctx, "%s/%s", path, d_entry->d_name);
|
||||||
|
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
stat(d_entry->d_name, &sb);
|
if (stat(full_path, &sb) == 0 && S_ISDIR(sb.st_mode) &&
|
||||||
if (S_ISDIR(sb.st_mode) &&
|
|
||||||
strcmp(d_entry->d_name, timestamp) != 0 &&
|
strcmp(d_entry->d_name, timestamp) != 0 &&
|
||||||
strcmp(d_entry->d_name, "..") != 0 &&
|
strcmp(d_entry->d_name, "..") != 0 &&
|
||||||
strcmp(d_entry->d_name, ".") != 0) {
|
strcmp(d_entry->d_name, ".") != 0) {
|
||||||
char *full_path =
|
|
||||||
ralloc_asprintf(mem_ctx, "%s/%s", path, d_entry->d_name);
|
|
||||||
nftw(full_path, remove_dir, 20, FTW_DEPTH);
|
nftw(full_path, remove_dir, 20, FTW_DEPTH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
closedir(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
|
|
Loading…
Reference in New Issue