diff -uprN -x *.o ../buf14/Makefile ./Makefile
--- ../buf14/Makefile	Thu Aug 21 23:41:21 1997
+++ ./Makefile	Sat Aug 23 21:10:54 1997
@@ -9,7 +9,7 @@ CC = gcc
 MYFLAGS = -Wall -fno-strict-prototypes
 
 #flags for profiling (see hacker.doc for more information)
-PROFILE = 
+PROFILE = -pg
 
 ##############################################################################
 # Do Not Modify Anything Below This Line (unless you know what you're doing) #
diff -uprN -x *.o ../buf14/act.comm.c ./act.comm.c
--- ../buf14/act.comm.c	Thu Aug 21 23:41:20 1997
+++ ./act.comm.c	Fri Aug 22 22:10:19 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/act.informative.c ./act.informative.c
--- ../buf14/act.informative.c	Thu Aug 21 23:41:20 1997
+++ ./act.informative.c	Fri Aug 22 22:10:25 1997
@@ -13,6 +13,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/act.item.c ./act.item.c
--- ../buf14/act.item.c	Thu Aug 21 23:41:20 1997
+++ ./act.item.c	Fri Aug 22 22:39:56 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
@@ -952,11 +953,13 @@ ACMD(do_pour)
       amount = FALSE;
     }
   }
+  if (!amount) {	/* Something is wrong, exit. */
+    release_buffer(arg1);
+    release_buffer(arg2);
+    return;
+  }
   if (GET_OBJ_VAL(from_obj, 1) == 0) {
     act("The $p is empty.", FALSE, ch, from_obj, 0, TO_CHAR);
-    amount = FALSE;
-  }
-  if (!amount) {	/* Something is wrong, exit. */
     release_buffer(arg1);
     release_buffer(arg2);
     return;
diff -uprN -x *.o ../buf14/act.movement.c ./act.movement.c
--- ../buf14/act.movement.c	Thu Aug 21 23:41:20 1997
+++ ./act.movement.c	Fri Aug 22 22:10:39 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/act.offensive.c ./act.offensive.c
--- ../buf14/act.offensive.c	Thu Aug 21 23:41:20 1997
+++ ./act.offensive.c	Fri Aug 22 22:10:45 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/act.other.c ./act.other.c
--- ../buf14/act.other.c	Thu Aug 21 23:41:20 1997
+++ ./act.other.c	Fri Aug 22 22:10:51 1997
@@ -15,6 +15,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/act.social.c ./act.social.c
--- ../buf14/act.social.c	Thu Aug 21 23:41:20 1997
+++ ./act.social.c	Fri Aug 22 22:10:58 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/act.wizard.c ./act.wizard.c
--- ../buf14/act.wizard.c	Thu Aug 21 23:41:21 1997
+++ ./act.wizard.c	Fri Aug 22 22:21:31 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
@@ -2141,7 +2142,7 @@ ACMD(do_show)
 #define RANGE(low, high) (value = MAX((low), MIN((high), (value))))
 
 /*
- * XXX: This uses release_and_return;
+ * XXX: This uses release_my_buffers();
  */
 ACMD(do_set)
 {
@@ -2230,18 +2231,21 @@ ACMD(do_set)
 
   if (!*name || !*field) {
     send_to_char("Usage: set <victim> <field> <value>\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
   if (!is_file) {
     if (is_player) {
       if (!(vict = get_player_vis(ch, name, 0))) {
 	send_to_char("There is no such player.\r\n", ch);
-	release_and_return;
+	release_my_buffers();
+	return;
       }
     } else {
       if (!(vict = get_char_vis(ch, name))) {
 	send_to_char("There is no such creature.\r\n", ch);
-	release_and_return;
+	release_my_buffers();
+	return;
       }
     }
   } else if (is_file) {
@@ -2252,19 +2256,22 @@ ACMD(do_set)
       if (GET_LEVEL(cbuf) >= GET_LEVEL(ch)) {
 	free_char(cbuf);
 	send_to_char("Sorry, you can't do that.\r\n", ch);
-	release_and_return;
+	release_my_buffers();
+	return;
       }
       vict = cbuf;
     } else {
       free(cbuf);
       send_to_char("There is no such player.\r\n", ch);
-      release_and_return;
+      release_my_buffers();
+      return;
     }
   }
   if (GET_LEVEL(ch) != LVL_IMPL) {
     if (!IS_NPC(vict) && GET_LEVEL(ch) <= GET_LEVEL(vict) && vict != ch) {
       send_to_char("Maybe that's not such a great idea...\r\n", ch);
-      release_and_return;
+      release_my_buffers();
+      return;
     }
   }
   for (l = 0; *(fields[l].cmd) != '\n'; l++)
@@ -2273,14 +2280,17 @@ ACMD(do_set)
 
   if (GET_LEVEL(ch) < fields[l].level) {
     send_to_char("You are not godly enough for that!\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
   if (IS_NPC(vict) && !(fields[l].pcnpc & NPC)) {
     send_to_char("You can't do that to a beast!\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   } else if (!IS_NPC(vict) && !(fields[l].pcnpc & PC)) {
     send_to_char("That can only be done to a beast!\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
   if (fields[l].type == BINARY) {
     if (!strcmp(val_arg, "on") || !strcmp(val_arg, "yes"))
@@ -2289,7 +2299,8 @@ ACMD(do_set)
       off = 1;
     if (!(on || off)) {
       send_to_char("Value must be on or off.\r\n", ch);
-      release_and_return;
+      release_my_buffers();
+      return;
     }
   } else if (fields[l].type == NUMBER) {
     value = atoi(val_arg);
diff -uprN -x *.o ../buf14/ban.c ./ban.c
--- ../buf14/ban.c	Thu Aug 21 23:41:21 1997
+++ ./ban.c	Fri Aug 22 22:11:09 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/boards.c ./boards.c
--- ../buf14/boards.c	Thu Aug 21 23:41:21 1997
+++ ./boards.c	Fri Aug 22 22:23:51 1997
@@ -50,6 +50,7 @@ TO ADD A NEW BOARD, simply follow our ea
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "db.h"
 #include "boards.h"
@@ -349,7 +350,7 @@ int Board_display_msg(int board_type, st
 }
 
 /*
- * XXX: This uses release_and_return;
+ * XXX: This uses release_my_buffers();
  */
 int Board_remove_msg(int board_type, struct char_data * ch, char *arg)
 {
@@ -360,45 +361,54 @@ int Board_remove_msg(int board_type, str
 
   one_argument(arg, number);
 
-  if (!*number || !isdigit(*number)) {	/* The {}'s are required for	*/
-    release_and_return 0;		/* release_and_return;		*/
+  if (!*number || !isdigit(*number)) {
+    release_my_buffers();
+    return 0;
   } else if (!(msg = atoi(number))) {
-    release_and_return 0;
+    release_my_buffers();
+    return 0;
   }
 
   if (!num_of_msgs[board_type]) {
     send_to_char("The board is empty!\r\n", ch);
-    release_and_return 1;
+    release_my_buffers();
+    return 1;
   }
   if (msg < 1 || msg > num_of_msgs[board_type]) {
     send_to_char("That message exists only in your imagination.\r\n", ch);
-    release_and_return 1;
+    release_my_buffers();
+    return 1;
   }
   ind = msg - 1;
   if (!MSG_HEADING(board_type, ind)) {
     send_to_char("That message appears to be screwed up.\r\n", ch);
-    release_and_return 1;
+    release_my_buffers();
+    return 1;
   }
   sprintf(buf, "(%s)", GET_NAME(ch));
   if (GET_LEVEL(ch) < REMOVE_LVL(board_type) &&
       !(strstr(MSG_HEADING(board_type, ind), buf))) {
     send_to_char("You are not holy enough to remove other people's messages.\r\n", ch);
-    release_and_return 1;
+    release_my_buffers();
+    return 1;
   }
   if (GET_LEVEL(ch) < MSG_LEVEL(board_type, ind)) {
     send_to_char("You can't remove a message holier than yourself.\r\n", ch);
-    release_and_return 1;
+    release_my_buffers();
+    return 1;
   }
   slot_num = MSG_SLOTNUM(board_type, ind);
   if (slot_num < 0 || slot_num >= INDEX_SIZE) {
     log("SYSERR: The board is seriously screwed up.");
     send_to_char("That message is majorly screwed up.\r\n", ch);
-    release_and_return 1;
+    release_my_buffers();
+    return 1;
   }
   for (d = descriptor_list; d; d = d->next)
     if (!d->connected && d->str == &(msg_storage[slot_num])) {
       send_to_char("At least wait until the author is finished before removing it!\r\n", ch);
-      release_and_return 1;
+      release_my_buffers();
+      return 1;
     }
   if (msg_storage[slot_num])
     free(msg_storage[slot_num]);
@@ -418,7 +428,8 @@ int Board_remove_msg(int board_type, str
   act(buf, FALSE, ch, 0, 0, TO_ROOM);
   Board_save_board(board_type);
 
-  release_and_return 1;
+  release_my_buffers();
+  return 1;
 }
 
 
diff -uprN -x *.o ../buf14/buffer.c ./buffer.c
--- ../buf14/buffer.c	Thu Aug 21 23:41:22 1997
+++ ./buffer.c	Mon Aug 25 23:26:29 1997
@@ -10,50 +10,36 @@
 #include "sysdep.h"
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "interpreter.h"
 
 /* ------------------------------------------------------------------------ */
 
 /*
- * #if 1 = memset()
- * #if 0 = *buffer = '\0' (recommended)
+ * FALSE = *buffer = '\0' (recommended)
+ * TRUE = memset()
+ * This also increases the effectiveness of check_buffer_size.
  */
-#if 1
-byte paranoid_buffer = TRUE;
-#else
 byte paranoid_buffer = FALSE;
-#endif
 
 /*
- * #if 1 = don't check buffer size. (recommended)
- * #if 0 = check buffer size to see how much the function used.
+ * FALSE = don't check buffer size. (recommended)
+ * TRUE = check buffer size to see how much the function used.
  */
-#if 0
 byte check_buffer_size = FALSE;
-#else
-byte check_buffer_size = TRUE;
-#endif
 
 /*
- * #if 1 = causes a normal reboot when corrupted. (recommended)
- * #if 0 = jettisons the buffers and creates a new set to run with.
+ * TRUE = causes a normal reboot when corrupted. (recommended)
+ * FALSE = jettisons the buffers and creates a new set to run with.
  *	Note that when MAX_OVERFLOW is exceeded, a reboot is forced anyway.
  */
-#if 1
 byte paranoid_overflow = TRUE;
-#else
-byte paranoid_overflow = FALSE;
-#endif
 
 /*
- * #if 1 = Log only problems and useful messages. (recommended)
- * #if 0 = Log all allocations. WARNING! This creates enormous (>16MB) output.
+ * FALSE = Log only problems and useful messages. (recommended)
+ * TRUE = Log all allocations. WARNING! This creates enormous (>16MB) output.
  */
-#if 1
 byte verbose_buffer = FALSE;
-#else
-byte verbose_buffer = TRUE;
-#endif
 
 /*
  * Adjust this value to tweak the buffer timeout from the default 5 minutes.
@@ -63,21 +49,9 @@ byte verbose_buffer = TRUE;
  * list can be corrupted before a reboot is forced.
  */
 #define BUFFER_LIFE	((600 RL_SEC) / PULSE_BUFFER)
-#define MAGIC_NUMBER	(0x3D)
+#define MAGIC_NUMBER	(0x06)
 #define MAX_OVERFLOW	3
 
-/*
- * For compilers without __FUNCTION__.  This could cause problems in
- * release_my_buffers() in the future.  Currently the only functions
- * that use it are ACMD() ones and they don't chain into each other to
- * cause an overlap free problem.  The dummy function is important.
- */
-void dummy() {
-#if !defined(__FUNCTION__)
-#define __FUNCTION__	__FILE__
-#endif
-}
-
 /* ------------------------------------------------------------------------ */
 
 /*
@@ -122,6 +96,7 @@ void init_buffers(void)
    * Some log messages are 128 byte buffers, some are SMALL_BUFSIZE,
    * we need a standard value like SMALL_LOGBUF (128?).
    */
+#if 0 /* Doubt we need these, it'll adjust automatically. */
   new_buffer(LARGE_BUFSIZE + GARBAGE_SPACE, TRUE); /* comm.c:process_output() */
   new_buffer(LARGE_BUFSIZE, TRUE);
   new_buffer(MAX_STRING_LENGTH, TRUE);
@@ -142,6 +117,7 @@ void init_buffers(void)
    * wondering why it is so large.
    */
   new_buffer(32384, FALSE);
+#endif
 }
 
 /*
@@ -301,6 +277,8 @@ void detach_buffer(char *data, const cha
    * we allocate a buffer and then free it shortly afterwards.
    */
   if (last_alloc && data == last_alloc->data) {
+    if (verbose_buffer)
+      log("BUF: last_alloc cache hit.");
     clear = last_alloc;
     last_alloc = NULL;
   } else
@@ -344,6 +322,12 @@ void free_buffer(struct buf_data *f)
     sprintf(buf, "BUF: %s: Freeing %d bytes in expired buffer.", __FUNCTION__, f->size);
   log(buf);
 
+  /*
+   * Would be very bad to reuse this buffer after it is freed.
+   */
+  if (f == last_alloc)
+    last_alloc = NULL;
+
   if (f->data)
     free(f->data);
   else
@@ -446,6 +430,11 @@ struct buf_data *malloc_buffer(sh_int si
 		new_buf->size, sizeof(struct buf_data));
     log(buf);
   }
+  if (paranoid_buffer)
+    memset(new_buf->data, '\0', new_buf->size);
+  else
+    *new_buf->data = '\0';
+
   return new_buf;
 }
 
@@ -476,9 +465,11 @@ char *acquire_buffer(sh_int size, const 
    * Everything big enough is being used, create a new one.
    */
   if (!give) {
-    char buf[128];
-    sprintf(buf, "BUF: Didn't find %d byte buffer! Making a new one.", size);
-    log(buf);
+    if (verbose_buffer) {
+      char buf[128];
+      sprintf(buf, "BUF: Didn't find %d byte buffer! Making a new one.", size);
+      log(buf);
+    }
     give = new_buffer(size, FALSE);
   }
 
@@ -563,7 +554,7 @@ void show_buffers(struct char_data *ch)
 
 ACMD(do_overflow)
 {
-  char *buf = get_buffer(130);	/* Will get a 256 byte. */
+  char *buf = get_buffer(130);	/* Hope to get a 256 byte. */
 
   strcpy(buf, "01234567890123489798494561613163164984981916513213216546947894"
 	"78949491613156194898191698132136484321321467897984132132156416879413"
@@ -576,7 +567,11 @@ ACMD(do_overflow)
 }
 
 char *BUFFER_FORMAT =
-"buffer (add | delete) size (persistant | temporary)\r\n";
+"buffer (add | delete) size (persistant | temporary)\r\n"
+"buffer verbose - toggle verbose mode.\r\n"
+"buffer paranoid - toggle between memset() or *buf = NUL.\r\n"
+"buffer check - toggle buffer usage checking.\r\n"
+"buffer overflow - toggle immediate reboot on overflow.\r\n";
 
 ACMD(do_buffer)
 {
@@ -586,8 +581,10 @@ ACMD(do_buffer)
   half_chop(argument, (arg1 = get_buffer(MAX_INPUT_LENGTH)), argument);
   half_chop(argument, (arg2 = get_buffer(MAX_INPUT_LENGTH)), argument);
   half_chop(argument, (arg3 = get_buffer(MAX_INPUT_LENGTH)), argument);
-  if (!arg1 || !arg2 || !arg3)
+  if (!*arg1)
     size = -1;
+  else if (!*arg2 || !*arg3)
+    size = -2;
   else if ((size = atoi(arg2)) == 0)
     size = -1;
   else if (is_abbrev(arg3, "persistant"))
@@ -601,10 +598,24 @@ ACMD(do_buffer)
   release_buffer(arg2);
   release_buffer(arg3);
 
-  /* Oops, error. */
-  if (size < 0)
+  if (size == -1)	/* Oops, error. */
     send_to_char(BUFFER_FORMAT, ch);
-  else if (is_abbrev(arg1, "delete")) {
+  else if (size == -2) {	/* -2 means a toggle command. */
+    if (is_abbrev(arg1, "verbose")) {
+      verbose_buffer = !verbose_buffer;
+      send_to_char(verbose_buffer ? "Verbose On.\r\n" : "Verbose Off.\r\n", ch);
+    } else if (is_abbrev(arg1, "paranoid")) {
+      paranoid_buffer = !paranoid_buffer;
+      send_to_char(paranoid_buffer ? "Now paranoid.\r\n" : "No longer paranoid.\r\n", ch);
+    } else if (is_abbrev(arg1, "check")) {
+      check_buffer_size = !check_buffer_size;
+      send_to_char(check_buffer_size ? "Checking on.\r\n" : "Not checking.\r\n", ch);
+    } else if (is_abbrev(arg1, "overflow")) {
+      paranoid_overflow = !paranoid_overflow;
+      send_to_char(paranoid_overflow ? "Reboot on overflow.\r\n" : "Will try to keep going.\r\n", ch);
+    } else
+      send_to_char(BUFFER_FORMAT, ch);
+  } else if (is_abbrev(arg1, "delete")) {
     struct buf_data *temp, *toy;
     for (toy = get_buffer_head(); toy; toy = toy->next)
       if (toy == toy->next) {
@@ -629,12 +640,12 @@ ACMD(do_buffer)
 int get_used(struct buf_data *buf)
 {
 #if defined(PICKY_BUFFERS)
-  int cnt = buf->req_size;
+  int cnt = buf->req_size - 1;
 #else
-  int cnt = buf->size;
+  int cnt = buf->size - 1;
 #endif
 
-  for (; cnt >= 0 && buf->data[cnt] == '\0'; cnt--);
+  for (; cnt > 0 && buf->data[cnt] == '\0'; cnt--);
 
   return cnt;
 }
diff -uprN -x *.o ../buf14/buffer.h ./buffer.h
--- ../buf14/buffer.h	Thu Aug 21 23:41:22 1997
+++ ./buffer.h	Fri Aug 22 22:09:59 1997
@@ -2,6 +2,14 @@
 #define _BUFFER_H_
 
 /*
+ * Believe __FUNCTION__ is a GCC-ism, but it's so handy...kind of like
+ * how g++ has a typeof operator.
+ */
+#if !defined(__GNUC__)
+#define __FUNCTION__	__FILE__
+#endif
+
+/*
  * #if 1 = return a pointer to the buffer structures
  * #if 0 = return only the data buffer (define this or all hell will break)
  */
@@ -35,14 +43,11 @@
 /*
  * Some macros to imitate C++ class styles.  release_and_return is odd but it
  * must be that way to allow values.  release_buffer() automatically NULL's
- * pointer to prevent further use.  Do not use release_and_return unless you
- * are sure you can remember to put {}'s around single line if statements,
- * otherwise use a release_my_buffers() and return pair. 
+ * pointer to prevent further use.
  */
 #define get_buffer(a)		acquire_buffer((a), __FUNCTION__, __LINE__)
 #define release_buffer(a)	do { detach_buffer((a), __FUNCTION__, __LINE__); (a) = NULL; } while (0)
 #define release_my_buffers()	detach_my_buffers(__FUNCTION__, __LINE__)
-#define release_and_return	release_my_buffers(); return
 
 /*
  * Public functions for outside use.
diff -uprN -x *.o ../buf14/castle.c ./castle.c
--- ../buf14/castle.c	Thu Aug 21 23:41:21 1997
+++ ./castle.c	Fri Aug 22 22:11:29 1997
@@ -15,6 +15,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/class.c ./class.c
--- ../buf14/class.c	Thu Aug 21 23:41:21 1997
+++ ./class.c	Fri Aug 22 22:11:38 1997
@@ -22,6 +22,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "db.h"
 #include "spells.h"
 #include "interpreter.h"
diff -uprN -x *.o ../buf14/comm.c ./comm.c
--- ../buf14/comm.c	Thu Aug 21 23:41:21 1997
+++ ./comm.c	Sat Aug 23 21:11:09 1997
@@ -27,6 +27,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
@@ -479,6 +480,7 @@ void game_loop(int mother_desc)
     /* Sleep if we don't have any connections */
     if (descriptor_list == NULL) {
       log("No connections.  Going to sleep.");
+exit(2);
       FD_ZERO(&input_set);
       FD_SET(mother_desc, &input_set);
       if (select(mother_desc + 1, &input_set, (fd_set *) 0, (fd_set *) 0, NULL) < 0) {
diff -uprN -x *.o ../buf14/db.c ./db.c
--- ../buf14/db.c	Thu Aug 21 23:41:21 1997
+++ ./db.c	Fri Aug 22 22:12:02 1997
@@ -16,6 +16,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "db.h"
 #include "comm.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/fight.c ./fight.c
--- ../buf14/fight.c	Thu Aug 21 23:41:21 1997
+++ ./fight.c	Fri Aug 22 22:12:07 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "handler.h"
 #include "interpreter.h"
diff -uprN -x *.o ../buf14/graph.c ./graph.c
--- ../buf14/graph.c	Thu Aug 21 23:41:21 1997
+++ ./graph.c	Fri Aug 22 22:12:16 1997
@@ -22,6 +22,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/handler.c ./handler.c
--- ../buf14/handler.c	Thu Aug 21 23:41:21 1997
+++ ./handler.c	Fri Aug 22 22:12:22 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "db.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/house.c ./house.c
--- ../buf14/house.c	Thu Aug 21 23:41:21 1997
+++ ./house.c	Fri Aug 22 22:12:28 1997
@@ -15,6 +15,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "handler.h"
 #include "db.h"
diff -uprN -x *.o ../buf14/interpreter.c ./interpreter.c
--- ../buf14/interpreter.c	Thu Aug 21 23:41:21 1997
+++ ./interpreter.c	Fri Aug 22 22:12:34 1997
@@ -16,6 +16,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "db.h"
diff -uprN -x *.o ../buf14/limits.c ./limits.c
--- ../buf14/limits.c	Thu Aug 21 23:41:21 1997
+++ ./limits.c	Fri Aug 22 22:12:40 1997
@@ -13,6 +13,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "spells.h"
 #include "comm.h"
 #include "db.h"
diff -uprN -x *.o ../buf14/magic.c ./magic.c
--- ../buf14/magic.c	Thu Aug 21 23:41:21 1997
+++ ./magic.c	Fri Aug 22 22:12:46 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "spells.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/mail.c ./mail.c
--- ../buf14/mail.c	Thu Aug 21 23:41:21 1997
+++ ./mail.c	Fri Aug 22 22:12:53 1997
@@ -20,6 +20,7 @@ Written by Jeremy Elson (jelson@cs.jhu.e
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "db.h"
 #include "interpreter.h"
diff -uprN -x *.o ../buf14/mobact.c ./mobact.c
--- ../buf14/mobact.c	Thu Aug 21 23:41:21 1997
+++ ./mobact.c	Fri Aug 22 22:12:59 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "db.h"
 #include "comm.h"
 #include "interpreter.h"
diff -uprN -x *.o ../buf14/modify.c ./modify.c
--- ../buf14/modify.c	Thu Aug 21 23:41:21 1997
+++ ./modify.c	Fri Aug 22 22:13:06 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "interpreter.h"
 #include "handler.h"
 #include "db.h"
diff -uprN -x *.o ../buf14/objsave.c ./objsave.c
--- ../buf14/objsave.c	Thu Aug 21 23:41:21 1997
+++ ./objsave.c	Fri Aug 22 22:13:15 1997
@@ -13,6 +13,7 @@
 
 
 #include "structs.h"
+#include "buffer.h"
 #include "comm.h"
 #include "handler.h"
 #include "db.h"
diff -uprN -x *.o ../buf14/olc.c ./olc.c
--- ../buf14/olc.c	Thu Aug 21 23:41:21 1997
+++ ./olc.c	Fri Aug 22 22:13:24 1997
@@ -19,6 +19,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/shop.c ./shop.c
--- ../buf14/shop.c	Thu Aug 21 23:41:21 1997
+++ ./shop.c	Fri Aug 22 22:26:32 1997
@@ -16,6 +16,7 @@
 #include "sysdep.h"
 
 #include "structs.h"
+#include "buffer.h"
 #include "comm.h"
 #include "handler.h"
 #include "db.h"
@@ -420,7 +421,7 @@ int buy_price(struct obj_data * obj, int
 }
 
 /*
- * XXX: This relies on release_and_return;
+ * XXX: This relies on release_my_buffers();
  */
 void shopping_buy(char *arg, struct char_data * ch,
 		       struct char_data * keeper, int shop_nr)
@@ -442,12 +443,14 @@ void shopping_buy(char *arg, struct char
     sprintf(buf, "%s A negative amount?  Try selling me something.",
 	    GET_NAME(ch));
     do_tell(keeper, buf, cmd_tell, 0);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
   if (!(*arg) || !(buynum)) {
     sprintf(buf, "%s What do you want to buy??", GET_NAME(ch));
     do_tell(keeper, buf, cmd_tell, 0);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
   if (!(obj = get_purchase_obj(ch, arg, keeper, shop_nr, TRUE))) {
     release_my_buffers();
@@ -461,25 +464,30 @@ void shopping_buy(char *arg, struct char
     switch (SHOP_BROKE_TEMPER(shop_nr)) {
     case 0:
       do_action(keeper, GET_NAME(ch), cmd_puke, 0);
-      release_and_return;
+      release_my_buffers();
+      return;
     case 1:
       do_echo(keeper, "smokes on his joint.", cmd_emote, SCMD_EMOTE);
-      release_and_return;
+      release_my_buffers();
+      return;
     default:
-      release_and_return;
+      release_my_buffers();
+      return;
     }
   }
   if ((IS_CARRYING_N(ch) + 1 > CAN_CARRY_N(ch))) {
     sprintf(buf, "%s: You can't carry any more items.\n\r",
 	    fname(obj->name));
     send_to_char(buf, ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
   if ((IS_CARRYING_W(ch) + GET_OBJ_WEIGHT(obj)) > CAN_CARRY_W(ch)) {
     sprintf(buf, "%s: You can't carry that much weight.\n\r",
 	    fname(obj->name));
     send_to_char(buf, ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
   while ((obj) && ((GET_GOLD(ch) >= buy_price(obj, shop_nr)) || IS_GOD(ch))
 	 && (IS_CARRYING_N(ch) < CAN_CARRY_N(ch)) && (bought < buynum)
diff -uprN -x *.o ../buf14/spec_assign.c ./spec_assign.c
--- ../buf14/spec_assign.c	Thu Aug 21 23:41:21 1997
+++ ./spec_assign.c	Fri Aug 22 22:13:50 1997
@@ -12,6 +12,7 @@
 #include "sysdep.h"
 
 #include "structs.h"
+#include "buffer.h"
 #include "db.h"
 #include "interpreter.h"
 #include "utils.h"
diff -uprN -x *.o ../buf14/spec_procs.c ./spec_procs.c
--- ../buf14/spec_procs.c	Thu Aug 21 23:41:21 1997
+++ ./spec_procs.c	Fri Aug 22 22:13:58 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "interpreter.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/spell_parser.c ./spell_parser.c
--- ../buf14/spell_parser.c	Thu Aug 21 23:41:21 1997
+++ ./spell_parser.c	Fri Aug 22 22:28:38 1997
@@ -15,6 +15,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "interpreter.h"
 #include "spells.h"
 #include "handler.h"
@@ -621,7 +622,7 @@ int cast_spell(struct char_data * ch, st
  */
 
 /*
- * XXX: This uses release_and_return;
+ * XXX: This uses release_my_buffers();
  */
 ACMD(do_cast)
 {
@@ -631,7 +632,8 @@ ACMD(do_cast)
   int mana, spellnum, i, target = 0;
 
   if (IS_NPC(ch)) {
-    release_and_return;	/* This requires {}. */
+    release_my_buffers();
+    return;
   }
 
   /* get: blank, spell name, target name */
@@ -639,12 +641,14 @@ ACMD(do_cast)
 
   if (s == NULL) {
     send_to_char("Cast what where?\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
   s = strtok(NULL, "'");
   if (s == NULL) {
     send_to_char("Spell names must be enclosed in the Holy Magic Symbols: '\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
   t = strtok(NULL, "\0");
 
@@ -653,13 +657,16 @@ ACMD(do_cast)
 
   if ((spellnum < 1) || (spellnum > MAX_SPELLS)) {
     send_to_char("Cast what?!?\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   } else if (GET_LEVEL(ch) < SINFO.min_level[(int) GET_CLASS(ch)]) {
     send_to_char("You do not know that spell!\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   } else if (GET_SKILL(ch, spellnum) == 0) {
     send_to_char("You are unfamiliar with that spell.\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
   /* Find the target */
   if (t != NULL) {
@@ -720,21 +727,25 @@ ACMD(do_cast)
 	      "what" : "who");
       send_to_char(buf, ch);
       release_buffer(buf);
-      release_and_return;
+      release_my_buffers();
+      return;
     }
   }
 
   if (target && (tch == ch) && SINFO.violent) {
     send_to_char("You shouldn't cast that on yourself -- could be bad for your health!\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   } else if (!target) {
     send_to_char("Cannot find the target of your spell!\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
   mana = mag_manacost(ch, spellnum);
   if ((mana > 0) && (GET_MANA(ch) < mana) && (GET_LEVEL(ch) < LVL_IMMORT)) {
     send_to_char("You haven't the energy to cast that spell!\r\n", ch);
-    release_and_return;
+    release_my_buffers();
+    return;
   }
 
   /* You throws the dice and you takes your chances.. 101% is total failure */
diff -uprN -x *.o ../buf14/spells.c ./spells.c
--- ../buf14/spells.c	Thu Aug 21 23:41:21 1997
+++ ./spells.c	Fri Aug 22 22:14:08 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "spells.h"
 #include "handler.h"
diff -uprN -x *.o ../buf14/utils.c ./utils.c
--- ../buf14/utils.c	Thu Aug 21 23:41:22 1997
+++ ./utils.c	Fri Aug 22 22:14:14 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "screen.h"
 #include "spells.h"
diff -uprN -x *.o ../buf14/utils.h ./utils.h
--- ../buf14/utils.h	Thu Aug 21 23:41:22 1997
+++ ./utils.h	Fri Aug 22 22:14:37 1997
@@ -448,5 +448,3 @@ void	update_pos(struct char_data *victim
 #else
 #define CRYPT(a,b) ((char *) crypt((a),(b)))
 #endif
-
-#include "buffer.h"
diff -uprN -x *.o ../buf14/weather.c ./weather.c
--- ../buf14/weather.c	Thu Aug 21 23:41:22 1997
+++ ./weather.c	Fri Aug 22 22:14:19 1997
@@ -14,6 +14,7 @@
 
 #include "structs.h"
 #include "utils.h"
+#include "buffer.h"
 #include "comm.h"
 #include "handler.h"
 #include "interpreter.h"
