char *const xalloc_msg_memory_exhausted = N_("Memory exhausted");
/* FIXME: describe */
-void (*xalloc_fail_func) () = 0;
+void (*xalloc_fail_func) (int) = 0;
#if __STDC__ && (HAVE_VPRINTF || HAVE_DOPRNT)
void error (int, int, const char *, ...);
#endif
static void
-xalloc_fail ()
+xalloc_fail (int size)
{
if (xalloc_fail_func)
- (*xalloc_fail_func) ();
+ (*xalloc_fail_func) (size);
error (xalloc_exit_failure, 0, xalloc_msg_memory_exhausted);
}
size_t n;
{
void *p;
+ extern char*cp_file;
+ extern int cp_line;
p = malloc (n);
if (p == 0)
- xalloc_fail ();
+ xalloc_fail ((int)n);
return p;
}
{
p = realloc (p, n);
if (p == 0)
- xalloc_fail ();
+ xalloc_fail (n);
return p;
}
/*
* $Log: tincd.c,v $
+ * Revision 1.5 2000/04/17 16:23:29 zarq
+ * Pass the requested size from xmalloc() and xrealloc() on to xalloc_fail_func()
+ *
* Revision 1.4 2000/04/06 18:28:29 zarq
* New option -D, don't detach.
*
}
}
-void memory_full(void)
+void memory_full(int size)
{
- syslog(LOG_ERR, "Memory exhausted; exiting.");
+ syslog(LOG_ERR, "Memory exhausted (last is %s:%d) (couldn't allocate %d bytes); exiting.", cp_file, cp_line, size);
exit(1);
}