# HG changeset patch # User Chong Yidong # Date 1217772430 0 # Node ID d1b49c04a897f2e6755e9c074c426486466821c3 # Parent 11d096f554b2b3dbbbc9cf10e3568452e3bf7733 (get_lim_data) [HAVE_GETRLIMIT && RLIMIT_AS]: Define. (check_memory_limits): Don't handle HAVE_GETRLIMIT here. diff -r 11d096f554b2 -r d1b49c04a897 src/vm-limit.c --- a/src/vm-limit.c Sun Aug 03 14:07:00 2008 +0000 +++ b/src/vm-limit.c Sun Aug 03 14:07:10 2008 +0000 @@ -67,6 +67,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 @@ -137,6 +152,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. */ @@ -154,21 +170,6 @@ 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; - data_size = rlimit.rlim_cur; - -#else /* not HAVE_GETRLIMIT */ - if (lim_data == 0) get_lim_data (); five_percent = lim_data / 20; @@ -182,8 +183,6 @@ cp = (char *) (*__morecore) (0); data_size = (char *) cp - (char *) data_space_start; -#endif /* not HAVE_GETRLIMIT */ - if (!warn_function) return; @@ -229,10 +228,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.