diff --git a/lib/ChangeLog b/lib/ChangeLog
index 4434009..b662aed 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,12 @@
+2004-11-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* memory.c: (zerror) Use zlog_err instead of fprintf to stderr.
+	  Instead of exiting, log currenty memory usage and then abort.
+	  (log_memstats) New function to log memory statistics, called by
+	  zerror.
+	  (show_memory_all) Loop over new mlists array instead of calling
+	  show_memory_vty separately for each memory_list.
+
 2004-11-08 Paul Jakma <paul@dishone.st>
 
 	* buffer.c: Add missing include of log.h.
diff --git a/lib/memory.c b/lib/memory.c
index bef0997..1f52bdf 100644
--- a/lib/memory.c
+++ b/lib/memory.c
@@ -27,6 +27,7 @@
 
 void alloc_inc (int);
 void alloc_dec (int);
+static void log_memstats(int log_priority);
 
 struct message mstr [] =
 {
@@ -42,9 +43,10 @@
 static void
 zerror (const char *fname, int type, size_t size)
 {
-  fprintf (stderr, "%s : can't allocate memory for `%s' size %d\n", 
-	   fname, lookup (mstr, type), (int) size);
-  exit (1);
+  zlog_err ("%s : can't allocate memory for `%s' size %d: %s\n", 
+	    fname, lookup (mstr, type), (int) size, strerror(errno));
+  log_memstats(LOG_WARNING);
+  abort();
 }
 
 /* Memory allocation. */
@@ -406,6 +408,36 @@
   { -1, NULL },
 };
 
+static struct mlist {
+  struct memory_list *list;
+  const char *name;
+} mlists[] = {
+  { memory_list_lib,   "LIB"},
+  { memory_list_rip,   "RIP"},
+  { memory_list_ripng, "RIPNG"},
+  { memory_list_ospf,  "OSPF"},
+  { memory_list_ospf6, "OSPF6"},
+  { memory_list_isis,  "ISIS"},
+  { memory_list_bgp,   "BGP"},
+  { NULL, NULL},
+};
+
+static void
+log_memstats(int pri)
+{
+  struct mlist *ml;
+
+  for (ml = mlists; ml->list; ml++)
+    {
+      struct memory_list *m;
+
+      zlog (NULL, pri, "Memory utilization in module %s:", ml->name);
+      for (m = ml->list; m->index >= 0; m++)
+	if (m->index && mstat[m->index].alloc)
+	  zlog (NULL, pri, "  %-22s: %5ld", m->format, mstat[m->index].alloc);
+    }
+}
+
 struct memory_list memory_list_separator[] =
 {
   { 0, NULL},
@@ -431,19 +463,14 @@
        "Memory statistics\n"
        "All memory statistics\n")
 {
-  show_memory_vty (vty, memory_list_lib);
-  show_memory_vty (vty, memory_list_separator);
-  show_memory_vty (vty, memory_list_rip);
-  show_memory_vty (vty, memory_list_separator);
-  show_memory_vty (vty, memory_list_ripng);
-  show_memory_vty (vty, memory_list_separator);
-  show_memory_vty (vty, memory_list_ospf);
-  show_memory_vty (vty, memory_list_separator);
-  show_memory_vty (vty, memory_list_ospf6);
-  show_memory_vty (vty, memory_list_separator);
-  show_memory_vty (vty, memory_list_isis);
-  show_memory_vty (vty, memory_list_separator);
-  show_memory_vty (vty, memory_list_bgp);
+  struct mlist *ml;
+
+  for (ml = mlists; ml->list; ml++)
+    {
+      if (ml != mlists)
+        show_memory_vty (vty, memory_list_separator);
+      show_memory_vty (vty, ml->list);
+    }
 
   return CMD_SUCCESS;
 }
