+/* When used in Emacs's lib-src, we need xmalloc and xrealloc. */
+
+void *
+xmalloc (size)
+ size_t size;
+{
+ register void *val;
+ val = (void *) malloc (size);
+ if (!val && size)
+ {
+ write (2, "virtual memory exhausted\n", 25);
+ exit (1);
+ }
+ return val;
+}
+
+void *
+xrealloc (block, size)
+ void *block;
+ size_t size;
+{
+ register void *val;
+ /* We must call malloc explicitly when BLOCK is 0, since some
+ reallocs don't do this. */
+ if (! block)
+ val = (void *) malloc (size);
+ else
+ val = (void *) realloc (block, size);
+ if (!val && size)
+ {
+ write (2, "virtual memory exhausted\n", 25);
+ exit (1);
+ }
+ return val;
+}
+
+# ifdef malloc
+# undef malloc
+# endif
+# define malloc xmalloc
+# ifdef realloc
+# undef realloc
+# endif
+# define realloc xrealloc
+