DJGPP does actually have getrlimit. The special config[.h].in for MSDOS lies and says it hasn't. However, this is a white lie, because getrlimit on DJGPP doesn't support RLIMIT_AS/RLIMIT_DATA, which is what we want, so we still want the workaround code. The following patch simply reverses the order of a couple of tests in vm-limit.c so that being on MSDOS overrides HAVE_GETRLIMIT. Is it OK to install? === modified file 'src/vm-limit.c' --- src/vm-limit.c 2014-07-11 10:09:51 +0000 +++ src/vm-limit.c 2014-08-10 16:44:24 +0000 @@ -71,7 +71,27 @@ /* Number of bytes of writable memory we can expect to be able to get. */ static size_t lim_data; -#ifdef HAVE_GETRLIMIT +#ifdef MSDOS + +void +get_lim_data (void) +{ + unsigned long totalram, freeram, totalswap, freeswap; + + dos_memory_info (&totalram, &freeram, &totalswap, &freeswap); + lim_data = freeram; + /* Don't believe they will give us more that 0.5 GB. */ + if (lim_data > 512U * 1024U * 1024U) + lim_data = 512U * 1024U * 1024U; +} + +unsigned long +ret_lim_data (void) +{ + get_lim_data (); + return lim_data; +} +#elif defined HAVE_GETRLIMIT # ifndef RLIMIT_AS # define RLIMIT_AS RLIMIT_DATA @@ -101,26 +121,6 @@ lim_data = reserved_heap_size; } -#elif defined MSDOS - -void -get_lim_data (void) -{ - unsigned long totalram, freeram, totalswap, freeswap; - - dos_memory_info (&totalram, &freeram, &totalswap, &freeswap); - lim_data = freeram; - /* Don't believe they will give us more that 0.5 GB. */ - if (lim_data > 512U * 1024U * 1024U) - lim_data = 512U * 1024U * 1024U; -} - -unsigned long -ret_lim_data (void) -{ - get_lim_data (); - return lim_data; -} #else # error "get_lim_data not implemented on this machine" #endif -- http://rrt.sc3d.org