diff options
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -46,6 +46,14 @@ MA 02111-1307, USA. */ # include <fcntl.h> #endif +#if defined(HAVE_SYS_RESOURCE_H) && defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) +# define SET_STACK_SIZE +#endif + +#ifdef SET_STACK_SIZE +# include <sys/resource.h> +#endif + #ifdef _AMIGA int __stack = 20000; /* Make sure we have 20K of stack space */ #endif @@ -881,6 +889,20 @@ main (int argc, char **argv, char **envp) no_default_sh_exe = 1; #endif +#ifdef SET_STACK_SIZE + /* Get rid of any avoidable limit on stack size. */ + { + struct rlimit rlim; + + /* Set the stack limit huge so that alloca does not fail. */ + if (getrlimit (RLIMIT_STACK, &rlim) == 0) + { + rlim.rlim_cur = rlim.rlim_max; + setrlimit (RLIMIT_STACK, &rlim); + } + } +#endif + /* Needed for OS/2 */ initialize_main(&argc, &argv); |