From: Chong Yidong Date: Sat, 2 Aug 2008 22:35:21 +0000 (+0000) Subject: (check_memory_limits): Don't use getrlimit on cygwin. Don't use X-Git-Tag: emacs-pretest-23.0.90~3677 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=21da04c4e9f97dde131a69d0c4e68405a65d6f88;p=emacs.git (check_memory_limits): Don't use getrlimit on cygwin. Don't use uninitialized pointer variable when using getrlimit. --- diff --git a/src/vm-limit.c b/src/vm-limit.c index 35bbdb8d079..7628d29b607 100644 --- a/src/vm-limit.c +++ b/src/vm-limit.c @@ -147,24 +147,21 @@ check_memory_limits () #endif extern POINTER (*__morecore) (); - register POINTER cp; unsigned long five_percent; unsigned long data_size; enum warnlevel new_warnlevel; -#ifdef HAVE_GETRLIMIT + /* 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) - return; - - /* This is a nonsensical case, but it happens -- rms. */ - if (rlimit.rlim_cur > rlimit.rlim_max) + 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; @@ -189,14 +186,11 @@ check_memory_limits () return; /* What level of warning does current memory usage demand? */ - if (data_size > five_percent * 19) - new_warnlevel = warned_95; - else if (data_size > five_percent * 17) - new_warnlevel = warned_85; - else if (data_size > five_percent * 15) - new_warnlevel = warned_75; - else - new_warnlevel = not_warned; + new_warnlevel + = (data_size > five_percent * 19) ? warned_95 + : (data_size > five_percent * 17) ? warned_85 + : (data_size > five_percent * 15) ? warned_75 + : not_warned; /* If we have gone up a level, give the appropriate warning. */ if (new_warnlevel > warnlevel || new_warnlevel == warned_95) @@ -233,8 +227,10 @@ check_memory_limits () 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.