Fix an exception for big file searches

This commit is contained in:
d0k3 2020-07-24 11:02:07 +02:00
parent 698ad9d891
commit 2791b42f6e

View File

@ -151,6 +151,10 @@ bool GetDirContentsWorker(DirStruct* contents, char* fpath, int fnsize, const ch
break; break;
} else if (!pattern || (fvx_match_name(fname, pattern) == FR_OK)) { } else if (!pattern || (fvx_match_name(fname, pattern) == FR_OK)) {
DirEntry* entry = &(contents->entry[contents->n_entries]); DirEntry* entry = &(contents->entry[contents->n_entries]);
if (contents->n_entries >= MAX_DIR_ENTRIES) {
ret = true; // Too many entries, still okay if we stop here
break;
}
strncpy(entry->path, fpath, 256); strncpy(entry->path, fpath, 256);
entry->path[255] = '\0'; entry->path[255] = '\0';
entry->p_name = fname - fpath; entry->p_name = fname - fpath;
@ -163,12 +167,8 @@ bool GetDirContentsWorker(DirStruct* contents, char* fpath, int fnsize, const ch
entry->size = fno.fsize; entry->size = fno.fsize;
} }
entry->marked = 0; entry->marked = 0;
if (!recursive || (entry->type != T_DIR)) { if (!recursive || (entry->type != T_DIR))
if (++(contents->n_entries) >= MAX_DIR_ENTRIES) { ++(contents->n_entries);
ret = true; // Too many entries, still okay if we stop here
break;
}
}
} }
if (recursive && (fno.fattrib & AM_DIR)) { if (recursive && (fno.fattrib & AM_DIR)) {
if (!GetDirContentsWorker(contents, fpath, fnsize, pattern, recursive)) if (!GetDirContentsWorker(contents, fpath, fnsize, pattern, recursive))