Pass the requested size from xmalloc() and xrealloc() on to xalloc_fail_func()
authorIvo Timmermans <ivo@lychnis.net>
Mon, 17 Apr 2000 16:23:29 +0000 (16:23 +0000)
committerIvo Timmermans <ivo@lychnis.net>
Mon, 17 Apr 2000 16:23:29 +0000 (16:23 +0000)
lib/xmalloc.c
src/tincd.c

index 204469f240ab7a67a48f92bdbe3e2ed92aafec61..6cb0b82bff7120167086018344875596f460e4c5 100644 (file)
@@ -69,7 +69,7 @@ int xalloc_exit_failure = EXIT_FAILURE;
 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 *, ...);
@@ -78,10 +78,10 @@ void error ();
 #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);
 }
 
@@ -92,10 +92,12 @@ xmalloc (n)
      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;
 }
 
@@ -110,7 +112,7 @@ xrealloc (p, n)
 {
   p = realloc (p, n);
   if (p == 0)
-    xalloc_fail ();
+    xalloc_fail (n);
   return p;
 }
 
index 433b5e64d710bc8e597022de1660aeb8059bd578..a8ea62c682354d510fd5ec08706cadb2cb88de9d 100644 (file)
@@ -19,6 +19,9 @@
 
 /*
  * $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.
  *
@@ -156,9 +159,9 @@ parse_options(int argc, char **argv, char **envp)
     }
 }
 
-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);
 }