Просмотр исходного кода

Fix stop loading paths early on recursive loading

pull/5496/head
Catania 2 недель назад
Родитель
Сommit
418310c8c6
1 измененных файлов: 12 добавлений и 15 удалений
  1. +12
    -15
      src/rcore.c

+ 12
- 15
src/rcore.c Просмотреть файл

@ -2768,7 +2768,11 @@ FilePathList LoadDirectoryFiles(const char *dirPath)
ScanDirectoryFiles(dirPath, &files, NULL, fileCounter); ScanDirectoryFiles(dirPath, &files, NULL, fileCounter);
// Security check: read files.count should match fileCounter // Security check: read files.count should match fileCounter
if (files.count != fileCounter) TRACELOG(LOG_WARNING, "FILEIO: Read files count do not match capacity allocated");
if (files.count != fileCounter)
{
TRACELOG(LOG_WARNING, "FILEIO: Read files count (%u) does not match capacity allocated (%u)", files.count, fileCounter);
files.count = fileCounter; // Avoid memory leak when unloading this FilePathList
}
} }
else TRACELOG(LOG_WARNING, "FILEIO: Failed to open requested directory"); // Maybe it's a file... else TRACELOG(LOG_WARNING, "FILEIO: Failed to open requested directory"); // Maybe it's a file...
@ -2794,6 +2798,13 @@ FilePathList LoadDirectoryFilesEx(const char *basePath, const char *filter, bool
// WARNING: basePath is always prepended to scanned paths // WARNING: basePath is always prepended to scanned paths
if (scanSubdirs) ScanDirectoryFilesRecursively(basePath, &files, filter, fileCounter); if (scanSubdirs) ScanDirectoryFilesRecursively(basePath, &files, filter, fileCounter);
else ScanDirectoryFiles(basePath, &files, filter, fileCounter); else ScanDirectoryFiles(basePath, &files, filter, fileCounter);
// Security check: read files.count should match fileCounter
if (files.count != fileCounter)
{
TRACELOG(LOG_WARNING, "FILEIO: Read files count (%u) does not match capacity allocated (%u)", files.count, fileCounter);
files.count = fileCounter; // Avoid memory leak when unloading this FilePathList
}
} }
else TRACELOG(LOG_WARNING, "FILEIO: Failed to open requested directory"); // Maybe it's a file... else TRACELOG(LOG_WARNING, "FILEIO: Failed to open requested directory"); // Maybe it's a file...
@ -4366,13 +4377,6 @@ static void ScanDirectoryFiles(const char *basePath, FilePathList *files, const
closedir(dir); closedir(dir);
} }
else TRACELOG(LOG_WARNING, "FILEIO: Directory cannot be opened (%s)", basePath); else TRACELOG(LOG_WARNING, "FILEIO: Directory cannot be opened (%s)", basePath);
// Security check: read files.count should match fileCounter
if (files->count != fileCount)
{
TRACELOG(LOG_WARNING, "FILEIO: Read files count do not match capacity allocated");
files->count = fileCount; // Avoid memory leak when unloading this FilePathList
}
} }
// Scan all files and directories recursively from a base path // Scan all files and directories recursively from a base path
@ -4436,13 +4440,6 @@ static void ScanDirectoryFilesRecursively(const char *basePath, FilePathList *fi
closedir(dir); closedir(dir);
} }
else TRACELOG(LOG_WARNING, "FILEIO: Directory cannot be opened (%s)", basePath); else TRACELOG(LOG_WARNING, "FILEIO: Directory cannot be opened (%s)", basePath);
// Security check: read files.count should match fileCounter
if (files->count != fileCount)
{
TRACELOG(LOG_WARNING, "FILEIO: Read files count do not match capacity allocated");
files->count = fileCount; // Avoid memory leak when unloading this FilePathList
}
} }
#if defined(SUPPORT_AUTOMATION_EVENTS) #if defined(SUPPORT_AUTOMATION_EVENTS)

Загрузка…
Отмена
Сохранить