Fri, 30 May 2025 09:51:23 +0200
use readdir instead of readdir_r
| src/server/daemon/vfs.c | file | annotate | diff | comparison | revisions | |
| src/server/daemon/vfs.h | file | annotate | diff | comparison | revisions |
--- a/src/server/daemon/vfs.c Fri May 30 08:40:58 2025 +0200 +++ b/src/server/daemon/vfs.c Fri May 30 09:51:23 2025 +0200 @@ -503,18 +503,11 @@ } long maxfilelen = fpathconf(dir_fd, _PC_NAME_MAX); size_t entry_len = offsetof(struct dirent, d_name) + maxfilelen + 1; - dir_data->cur = VFS_MALLOC(pool, entry_len); - if(!dir_data->cur) { - closedir(sys_dir); - VFS_FREE(pool, dir_data); - return NULL; - } dir_data->dir = sys_dir; VFSDir *dir = VFS_MALLOC(pool, sizeof(VFSDir)); if(!dir) { closedir(sys_dir); - VFS_FREE(pool, dir_data->cur); VFS_FREE(pool, dir_data); return NULL; } @@ -559,18 +552,11 @@ } long maxfilelen = fpathconf(fd->fd, _PC_NAME_MAX); size_t entry_len = offsetof(struct dirent, d_name) + maxfilelen + 1; - dir_data->cur = VFS_MALLOC(pool, entry_len); - if(!dir_data->cur) { - closedir(sys_dir); - VFS_FREE(pool, dir_data); - return NULL; - } dir_data->dir = sys_dir; VFSDir *dir = VFS_MALLOC(pool, sizeof(VFSDir)); if(!dir) { closedir(sys_dir); - VFS_FREE(pool, dir_data->cur); VFS_FREE(pool, dir_data); return NULL; } @@ -693,9 +679,8 @@ int sys_dir_read(VFS_DIR dir, VFS_ENTRY *entry, int getstat) { SysVFSDir *dirdata = dir->data; - struct dirent *result = NULL; - int s = readdir_r(dirdata->dir, dirdata->cur, &result); - if(!s && result) { + struct dirent *result = readdir(dirdata->dir); + if(result) { char *name = result->d_name; if(!strcmp(name, ".") || !strcmp(name, "..")) { return sys_dir_read(dir, entry, getstat); @@ -722,11 +707,9 @@ pool_handle_t *pool = dir->ctx->pool; if(pool) { - pool_free(pool, dirdata->cur); pool_free(pool, dirdata); pool_free(pool, dir); } else { - free(dirdata->cur); free(dirdata); free(dir); }