You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
#ifdef emacs
-#include "config.h"
+#include <config.h>
#include "lisp.h"
#endif
0 means don't issue them. */
static void (*warn_function) ();
-extern POINTER sbrk ();
-
/* Get more memory space, complaining if we're near the end. */
-static POINTER
-morecore_with_warning (size)
- register int size;
+static void
+check_memory_limits ()
{
- POINTER result;
+ extern POINTER (*__morecore) ();
+
register POINTER cp;
- int five_percent;
- int data_size;
+ unsigned long five_percent;
+ unsigned long data_size;
if (lim_data == 0)
get_lim_data ();
five_percent = lim_data / 20;
/* Find current end of memory and issue warning if getting near max */
- cp = sbrk (0);
+ cp = (char *) (*__morecore) (0);
data_size = (char *) cp - (char *) data_space_start;
if (warn_function)
if (EXCEEDS_LISP_PTR (cp))
(*warn_function) ("Warning: memory in use exceeds lisp pointer size");
-
- result = sbrk (size);
- if (result == (POINTER) -1)
- return NULL;
- return result;
}
/* Cause reinitialization based on job parameters;
POINTER start;
void (*warnfun) ();
{
- extern POINTER (* __morecore) (); /* From gmalloc.c */
+ extern void (* __after_morecore_hook) (); /* From gmalloc.c */
if (start)
data_space_start = start;
data_space_start = start_of_data ();
warn_function = warnfun;
- __morecore = &morecore_with_warning;
+ __after_morecore_hook = check_memory_limits;
+
+#ifdef WINDOWSNT
+ /* Force data limit to be recalculated on each run. */
+ lim_data = 0;
+#endif
}