# HG changeset patch # User Olaf Wintermann # Date 1748591483 -7200 # Node ID 2839d5e28c75d030abecc2ba26ba75c5e3c5dd9e # Parent d703055a1af70f7002f10ae7867a3ae0126d24c2 use readdir instead of readdir_r diff -r d703055a1af7 -r 2839d5e28c75 src/server/daemon/vfs.c --- 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); } diff -r d703055a1af7 -r 2839d5e28c75 src/server/daemon/vfs.h --- a/src/server/daemon/vfs.h Fri May 30 08:40:58 2025 +0200 +++ b/src/server/daemon/vfs.h Fri May 30 09:51:23 2025 +0200 @@ -45,7 +45,6 @@ typedef struct SysVFSDir { DIR *dir; - struct dirent *cur; } SysVFSDir; enum VFSAioOp {