src/server/daemon/vfs.c

changeset 592
2839d5e28c75
parent 490
d218607f5a7e
child 593
d83dced6dd80
--- 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);
     }

mercurial