- if (EXCEEDS_ELISP_PTR (cp))
- (*warnfunction) ("Warning: memory in use exceeds lisp pointer size");
-
- result = sbrk (size);
- if (result == (POINTER) -1)
- return NULL;
- return result;
+ /* If we go down below 70% full, issue another 75% warning
+ when we go up again. */
+ if (data_size < five_percent * 14)
+ warnlevel = 0;
+ /* If we go down below 80% full, issue another 85% warning
+ when we go up again. */
+ else if (warnlevel > 1 && data_size < five_percent * 16)
+ warnlevel = 1;
+ /* If we go down below 90% full, issue another 95% warning
+ when we go up again. */
+ else if (warnlevel > 2 && data_size < five_percent * 18)
+ warnlevel = 2;
+
+ if (EXCEEDS_LISP_PTR (cp))
+ (*warn_function) ("Warning: memory in use exceeds lisp pointer size");