diff --git a/src/modules/files/efuns.c b/src/modules/files/efuns.c index 058ec9e270ced3682e97bc62b0b5c2d731fa34ea..9a25d79e2ac286ce1699dee9334b1e120f44f7d3 100644 --- a/src/modules/files/efuns.c +++ b/src/modules/files/efuns.c @@ -190,10 +190,13 @@ void f_get_dir(INT32 args) 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"); - } + tmp = xalloc(sizeof(struct dirent) + +#ifdef HAVE_SOLARIS_READDIR_R + pathconf(path, _PC_NAME_MAX) +#else + NAME_MAX +#endif /* HAVE_SOLARIS_READDIR_R */ + + 1); while(1) {