# HG changeset patch # User Andreas Schwab # Date 1217755654 0 # Node ID c2be97b488c479d2fa43a7c28fc783e8a7f06c70 # Parent 96dac119813192c6ac300f94f9d84fb0bdc92cbe (get_lim_data) [HAVE_GETRLIMIT && RLIMIT_AS]: Define. (check_memory_limits): Don't handle HAVE_GETRLIMIT here. diff -r 96dac1198131 -r c2be97b488c4 src/ChangeLog --- a/src/ChangeLog Sun Aug 03 08:52:03 2008 +0000 +++ b/src/ChangeLog Sun Aug 03 09:27:34 2008 +0000 @@ -1,7 +1,7 @@ 2008-08-03 Andreas Schwab - * vm-limit.c (check_memory_limits) [HAVE_GETRLIMIT]: Fix - calculation of data_size. Use correct type for five_percent. + * vm-limit.c (get_lim_data) [HAVE_GETRLIMIT && RLIMIT_AS]: Define. + (check_memory_limits): Don't handle HAVE_GETRLIMIT here. 2008-08-02 Chong Yidong diff -r 96dac1198131 -r c2be97b488c4 src/vm-limit.c --- a/src/vm-limit.c Sun Aug 03 08:52:03 2008 +0000 +++ b/src/vm-limit.c Sun Aug 03 09:27:34 2008 +0000 @@ -65,6 +65,21 @@ } #else /* not NO_LIM_DATA */ +#if defined (HAVE_GETRLIMIT) && defined (RLIMIT_AS) +static void +get_lim_data () +{ + struct rlimit rlimit; + + getrlimit (RLIMIT_AS, &rlimit); + if (rlimit.rlim_cur == RLIM_INFINITY) + lim_data = -1; + else + lim_data = rlimit.rlim_cur; +} + +#else /* not HAVE_GETRLIMIT */ + #ifdef USG static void @@ -135,6 +150,7 @@ #endif /* BSD4_2 */ #endif /* not WINDOWSNT */ #endif /* not USG */ +#endif /* not HAVE_GETRLIMIT */ #endif /* not NO_LIM_DATA */ /* Verify amount of memory available, complaining if we're near the end. */ @@ -148,34 +164,14 @@ extern POINTER (*__morecore) (); register POINTER cp; -#if defined (HAVE_GETRLIMIT) && ! defined (CYGWIN) - rlim_t five_percent; -#else unsigned long five_percent; -#endif unsigned long data_size; enum warnlevel new_warnlevel; - /* Cygwin has a faulty getrlimit implementation: - http://lists.gnu.org/archive/html/emacs-devel/2008-08/msg00125.html */ -#if defined (HAVE_GETRLIMIT) && ! defined (CYGWIN) - struct rlimit rlimit; - - getrlimit (RLIMIT_AS, &rlimit); - if (RLIM_INFINITY == rlimit.rlim_max - /* This is a nonsensical case, but it happens -- rms. */ - || rlimit.rlim_cur > rlimit.rlim_max) - return; - five_percent = rlimit.rlim_max / 20; - -#else /* not HAVE_GETRLIMIT */ - if (lim_data == 0) get_lim_data (); five_percent = lim_data / 20; -#endif /* not HAVE_GETRLIMIT */ - /* Find current end of memory and issue warning if getting near max */ #ifdef REL_ALLOC if (real_morecore) @@ -230,10 +226,8 @@ warnlevel = warned_85; } -#if ! defined (HAVE_GETRLIMIT) || defined (CYGWIN) if (EXCEEDS_LISP_PTR (cp)) (*warn_function) ("Warning: memory in use exceeds lisp pointer size"); -#endif } /* Enable memory usage warnings.