From 1935e6df3d6a73e1585cbf232afaa8e93455d510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Wed, 22 Jan 1997 11:16:01 +0100 Subject: [PATCH] Moved the alloca in f_get_dir out of the loop. Doesn't throw an error when reaching the end of the directory any longer.. Rev: src/modules/files/efuns.c:1.10 --- src/modules/files/efuns.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/modules/files/efuns.c b/src/modules/files/efuns.c index a92ff6567e..75467c2094 100644 --- a/src/modules/files/efuns.c +++ b/src/modules/files/efuns.c @@ -182,19 +182,19 @@ void f_get_dir(INT32 args) char buffer[MAXPATHLEN * 4]; char *ptrs[FPR]; int lens[FPR]; + struct dirent *tmp; + if (!(tmp = alloca(sizeof(struct dirent) + + pathconf(path, _PC_NAME_MAX) + 1))) { + error("get_dir(): Out of memory!\n"); + } + while(1) { int e; - struct dirent *tmp; int num_files=0; char *bufptr=buffer; - if (!(tmp = alloca(sizeof(struct dirent) + - pathconf(path, _PC_NAME_MAX) + 1))) { - error("get_dir(): Out of memory!\n"); - } - THREADS_ALLOW(); while(1) @@ -220,7 +220,7 @@ void f_get_dir(INT32 args) num_files++; } THREADS_DISALLOW(); - if (!d) { + if ((!d) && (errno != ENOENT)) { error("get_dir(): readdir_r() failed: %d\n", errno); } for(e=0;e<num_files;e++) -- GitLab