diff --git a/src/modules/files/efuns.c b/src/modules/files/efuns.c
index a4c3af97684705679ae3284c6c316539e1d99841..6f2583a7c785df0ad12aed1b6a3d8e02155b6dd6 100644
--- a/src/modules/files/efuns.c
+++ b/src/modules/files/efuns.c
@@ -340,9 +340,10 @@ void f_get_dir(INT32 args)
     
     if (!(tmp = alloca(sizeof(struct dirent) + 
 #ifdef HAVE_SOLARIS_READDIR_R
-		       pathconf(path, _PC_NAME_MAX)
+		       ((pathconf(path, _PC_NAME_MAX) < 1024)?1024:
+			pathconf(path, _PC_NAME_MAX))
 #else
-		       NAME_MAX
+		       NAME_MAX + 1024
 #endif /* HAVE_SOLARIS_READDIR_R */
 		       + 1))) {
       closedir(dir);