Index: /trunk/psLib/src/Makefile
===================================================================
--- /trunk/psLib/src/Makefile	(revision 431)
+++ /trunk/psLib/src/Makefile	(revision 432)
@@ -4,4 +4,6 @@
 
 include Makefile.Globals
+
+.PHONY: sysUtils installSysUtils cleanSysUtils
 
 NAME:= "$Name: not supported by cvs2svn $ "
@@ -15,4 +17,5 @@
 INSTALLTARGETS = installSysUtils
 CLEANTARGETS = cleanSysUtils
+DISTCLEANTARGETS = distcleanSysUtils
 
 all:	$(ALLTARGETS)  
@@ -29,4 +32,7 @@
 cleanSysUtils:
 	$(MAKE) --directory=sysUtils clean
+
+distcleanSysUtils:
+	$(MAKE) --directory=sysUtils distclean
 
 
Index: /trunk/psLib/src/sys/psAbort.c
===================================================================
--- /trunk/psLib/src/sys/psAbort.c	(revision 431)
+++ /trunk/psLib/src/sys/psAbort.c	(revision 432)
@@ -9,6 +9,6 @@
  *  @author Eric Van Alst, MHPCC
  *   
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 20:37:56 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -57,9 +57,5 @@
 /*****************************************************************************/
 
-void psAbort(
-    char *name,   
-    char *fmt,
-    ...   
-)
+void psAbort(const char *name, const char *fmt,... )
 {
     va_list    argPtr;     // variable list arguement pointer
Index: /trunk/psLib/src/sys/psAbort.h
===================================================================
--- /trunk/psLib/src/sys/psAbort.h	(revision 431)
+++ /trunk/psLib/src/sys/psAbort.h	(revision 432)
@@ -9,6 +9,6 @@
  *  @author Eric Van Alst, MHPCC
  *   
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 20:37:12 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -45,6 +45,6 @@
  */
 void psAbort(
-    char *name,   /**< Source of abort such as file or function detected */
-    char *fmt,    /**< A printf style formatting statement defining msg */
+    const char* name,                   ///< Source of abort such as file or function detected
+    const char* fmt,                    ///< A printf style formatting statement defining msg
     ...
 );
Index: /trunk/psLib/src/sys/psError.c
===================================================================
--- /trunk/psLib/src/sys/psError.c	(revision 431)
+++ /trunk/psLib/src/sys/psError.c	(revision 432)
@@ -10,6 +10,6 @@
  *  @author Eric Van Alst, MHPCC
  *   
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 19:04:58 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -57,9 +57,5 @@
 /*****************************************************************************/
 
-void psError(
-   char *name,   
-   char *fmt,
-   ...   
-)
+void psError(const char *name,const char *fmt, ...)
 {
     va_list    argPtr;        // variable list arguement pointer
Index: /trunk/psLib/src/sys/psError.h
===================================================================
--- /trunk/psLib/src/sys/psError.h	(revision 431)
+++ /trunk/psLib/src/sys/psError.h	(revision 432)
@@ -10,6 +10,6 @@
  *  @author Eric Van Alst, MHPCC
  *   
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 19:03:41 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -45,6 +45,6 @@
  */
 void psError(
-    char *name,   /**< Source of error such as file or function detected */
-    char *fmt,    /**< A printf style formatting statement defining msg */
+    const char *name,                   ///< Source of error such as file or function detected
+    const char *fmt,                    ///< A printf style formatting statement defining msg
     ...
 );
Index: /trunk/psLib/src/sys/psMemory.c
===================================================================
--- /trunk/psLib/src/sys/psMemory.c	(revision 431)
+++ /trunk/psLib/src/sys/psMemory.c	(revision 432)
@@ -8,6 +8,6 @@
  *  @author Robert Lupton, Princeton University
  *
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 21:22:09 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -20,8 +20,9 @@
 #include "psMemory.h"
 #include "psError.h"
+#include "psAbort.h"
 
 #define P_PS_MEMMAGIC (void *)0xdeadbeef // Magic number in psMemBlock header
 
-static int bad_memblock(const psMemBlock *m, int quiet);
+static int checkMemBlock(const psMemBlock *m, const char* funcName);
 static int numMemBlock = 0;             // size of memBlocks
 static psMemBlock **memBlocks = NULL;
@@ -58,22 +59,17 @@
                           const char *file, int lineno)
 {
-    if (bad_memblock(ptr, 0)) {
-        fprintf(stderr, "Memory corruption or an attempt to manipulate memory "
-                "not allocated with psAlloc at %s", file);
-        if (lineno > 0) {
-            fprintf(stderr, ":%d", lineno);
-        }
-        fprintf(stderr, "\n");
-    } else if (ptr->refCounter <= 0) {
-        psError(__func__, PS_ERR_BADFREE, PS_NEW_ERROR,
-                "Block %ld allocated at %s:%d freed more than once at %s:%d\n",
-                ptr->id, ptr->file, ptr->lineno, file, lineno);
-    } else if (ptr->refCounter > 1) {
-        psError(__func__,  PS_ERR_BADFREE, PS_NEW_ERROR,
-                "Block %ld allocated at %s:%d freed while still referenced at %s:%d\n",
-                ptr->id, ptr->file, ptr->lineno, file, lineno);
-    }
-
-    if (lineno > 0) {
+    checkMemBlock(ptr, __func__);
+
+	if (ptr->refCounter <= 0) {
+		psError(__func__,
+		        "Block %ld allocated at %s:%d freed more than once at %s:%d\n",
+				ptr->id, ptr->file, ptr->lineno, file, lineno);
+	} else if (ptr->refCounter > 1) {
+		psError(__func__,
+		        "Block %ld allocated at %s:%d freed while still referenced at %s:%d\n",
+				ptr->id, ptr->file, ptr->lineno, file, lineno);
+	}
+
+	if (lineno > 0) {
         psAbort(__func__, "Detected a problem in the memory system at %s:%d", file, lineno);
     }
@@ -123,19 +119,15 @@
  * isn't resignalled)
  */
-static int memAllocateCallbackDefault(const psMemBlock *ptr)
+static long memAllocateCallbackDefault(const psMemBlock *ptr)
 {
     static int incr = 0;  // "p_psMemAllocateID += incr"
 
-    assert (ptr != NULL);  // prevent compiler warnings
-
     return incr;
 }
 
-static int memFreeCallbackDefault(const psMemBlock *ptr)
+static long memFreeCallbackDefault(const psMemBlock *ptr)
 {
     static int incr = 0;  // "p_psMemFreeID += incr"
 
-    assert (ptr != NULL);  // prevent compiler warnings
-
     return incr;
 }
@@ -144,10 +136,10 @@
  * The default callbacks, and the routines to change them
  */
-static psMemCallback memAllocateCallback = memAllocateCallbackDefault;
-static psMemCallback memFreeCallback = memFreeCallbackDefault;
-
-psMemCallback psMemAllocateSetCallback(psMemCallback func)
-{
-    psMemCallback old = memAllocateCallback;
+static psMemAllocateCallback memAllocateCallback = memAllocateCallbackDefault;
+static psMemFreeCallback memFreeCallback = memFreeCallbackDefault;
+
+psMemAllocateCallback psMemAllocateSetCallback(psMemAllocateCallback func)
+{
+    psMemFreeCallback old = memAllocateCallback;
 
     if (func != NULL) {
@@ -160,7 +152,7 @@
 }
 
-psMemCallback psMemFreeSetCallback(psMemCallback func)
-{
-    psMemCallback old = memFreeCallback;
+psMemFreeCallback psMemFreeSetCallback(psMemFreeCallback func)
+{
+    psMemFreeCallback old = memFreeCallback;
 
     if (func != NULL) {
@@ -191,28 +183,19 @@
 
 static int
-bad_memblock(const psMemBlock *m, // block to check
-             int quiet)   // be quiet?
+checkMemBlock(const psMemBlock *m, // block to check
+             const char* funcName)   // be quiet?
 {
     if (m == NULL) {
-        if (!quiet) {
-            psError(__func__,  PS_ERR_MEMORY_CORRUPTION, PS_NEW_ERROR,
-                    "psMemCheckCorruption: NULL memory block\n");
-        }
+        psError(funcName,"Memory Corruption: NULL memory block found.");
         return(1);
     }
 
     if (!ALIGNED(m)) {
-        if (!quiet) {
-            psError(__func__,  PS_ERR_MEMORY_CORRUPTION, PS_NEW_ERROR,
-                    "psMemCheckCorruption: non-aligned memory block\n");
-        }
+        psError(funcName, "psMemCheckCorruption: non-aligned memory block");
         return(1);
     }
 
-    if (m->magic0 != P_PS_MEMMAGIC || m->magic != P_PS_MEMMAGIC) {
-        if (!quiet) {
-            psError(__func__, PS_ERR_MEMORY_CORRUPTION, PS_NEW_ERROR,
-                    "psMemCheckCorruption: memory block %ld is corrupted\n", m->id);
-        }
+    if (m->startblock != P_PS_MEMMAGIC || m->endblock != P_PS_MEMMAGIC) {
+        psError(funcName, "psMemCheckCorruption: memory block %ld is corrupted", m->id);
         return(1);
     }
@@ -231,8 +214,8 @@
     for (int i = 1; i <= memid; i++) {
         if (memBlocks[i] != NULL) {
-            if (bad_memblock(memBlocks[i], 1)) {
+            if (checkMemBlock(memBlocks[i], __func__)) {
                 nbad++;
 
-                memProblemCallback(memBlocks[i], "(psMemCheckCorruption)", 0);
+                memProblemCallback(memBlocks[i], __func__, __LINE__);
 
                 if (abort_on_error) {
@@ -263,5 +246,6 @@
     ptr->file = file;
     *(int *)&ptr->lineno = lineno;
-    *(void **)&ptr->magic0 = *(void **)&ptr->magic = P_PS_MEMMAGIC;
+    ptr->startblock = P_PS_MEMMAGIC;
+	ptr->endblock = P_PS_MEMMAGIC;
 
     ptr->refCounter = 1;  // one user so far
@@ -273,7 +257,7 @@
         p_psMemAllocateID += memAllocateCallback(ptr);
     }
-    if (memid >= nMemBlock) {
-        nMemBlock = (nMemBlock == 0) ? 100000 : 2*nMemBlock;
-        memBlocks = realloc(memBlocks, nMemBlock*sizeof(psMemBlock *)); // NOT psRealloc
+    if (memid >= numMemBlock) {
+        numMemBlock = (numMemBlock == 0) ? 100000 : 2*numMemBlock;
+        memBlocks = realloc(memBlocks, numMemBlock*sizeof(psMemBlock *)); // NOT psRealloc
     }
     memBlocks[ptr->id] = ptr;
@@ -311,5 +295,5 @@
     }
 
-    if (bad_memblock(ptr, 0)) {
+    if (checkMemBlock(ptr, "psFree") != 0) {
         memProblemCallback(ptr, file, lineno); // we may not own this block; don't free it
     } else {
@@ -369,5 +353,5 @@
     }
 
-    assert (*arr == NULL);  // Don't generate a memory leak!
+    p_psFree(*arr,__FILE__, __LINE__);  // Don't generate a memory leak!
 
     *arr = p_psAlloc(nleak*sizeof(psMemBlock), __FILE__, __LINE__);
@@ -395,7 +379,7 @@
     psMemBlock *ptr = ((psMemBlock *)vptr) - 1;
 
-    if (bad_memblock(ptr, 0))
-    {
-        memProblemCallback(ptr, "(psMemGetRefCounter)", -1);
+    if (checkMemBlock(ptr, __func__) != 0)
+    {
+        memProblemCallback(ptr, __func__, __LINE__);
     }
 
@@ -412,7 +396,7 @@
     psMemBlock *ptr = ((psMemBlock *)vptr) - 1;
 
-    if (bad_memblock(ptr, 0))
-    {
-        memProblemCallback(ptr, "(psMemIncrRefCounter)", -1);
+    if (checkMemBlock(ptr, __func__))
+    {
+        memProblemCallback(ptr, __func__, __LINE__);
     }
 
@@ -431,7 +415,7 @@
     psMemBlock *ptr = ((psMemBlock *)vptr) - 1;
 
-    if (bad_memblock(ptr, 0))
-    {
-        memProblemCallback(ptr, "(psMemDecrRefCounter)", -1);
+    if (checkMemBlock(ptr, __func__))
+    {
+        memProblemCallback(ptr, __func__, __LINE__);
     }
 
Index: /trunk/psLib/src/sys/psMemory.h
===================================================================
--- /trunk/psLib/src/sys/psMemory.h	(revision 431)
+++ /trunk/psLib/src/sys/psMemory.h	(revision 432)
@@ -14,6 +14,6 @@
  *  @author Robert Lupton, Princeton University
  *
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 21:22:09 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -79,40 +79,49 @@
 
 /// Check for memory leaks
-int psMemCheckLeaks(int id0,  ///< don't list blocks with id < id0
-                    psMemBlock ***arr, ///< pointer to array of pointers to leaked blocks, or NULL
-                    FILE *fd)  ///< print list of leaks to fd (or NULL)
-;
+int psMemCheckLeaks(
+        int id0,                        ///< don't list blocks with id < id0
+        psMemBlock ***arr,              ///< pointer to array of pointers to leaked blocks, or NULL
+        FILE *fd                        ///< print list of leaks to fd (or NULL)
+);
 
 /// Check for memory corruption
-int psMemCheckCorruption(int abort_on_error) ///< Abort on detecting corruption?
-;
+int psMemCheckCorruption(
+        int abort_on_error              ///< Abort on detecting corruption?
+);
 
 /// Return reference counter
-int psMemGetRefCounter(void *vptr) ///< Pointer to get refCounter for
-;
+int psMemGetRefCounter(
+        void *vptr                      ///< Pointer to get refCounter for
+);
 
 /// Increment reference counter and return the pointer
-void *psMemIncrRefCounter(void *vptr) ///< Pointer to increment refCounter, and return
-;
+void *psMemIncrRefCounter(
+        void *vptr                      ///< Pointer to increment refCounter, and return
+);
 
 /// Decrement reference counter and return the pointer
-void *psMemDecrRefCounter(void *vptr) ///< Pointer to decrement refCounter, and return
-;
+void *psMemDecrRefCounter(
+        void *vptr                      ///< Pointer to decrement refCounter, and return
+);
 
 /// Set callback for problems
-psMemProblemCallback psMemProblemCallbackSet(psMemProblemCallback func) ///< Function to run
-;
+psMemProblemCallback psMemProblemCallbackSet(
+        psMemProblemCallback func       ///< Function to run
+);
 
 /// Set callback for out-of-memory
-psMemExhaustedCallback psMemExhaustedCallbackSet(psMemExhaustedCallback func) ///< Function to run
-;
+psMemExhaustedCallback psMemExhaustedCallbackSet(
+        psMemExhaustedCallback func     ///< Function to run
+);
 
 /// Set call back for when a particular memory block is allocated
-psMemCallback psMemAllocateCallbackSet(psMemAllocateCallback func) ///< Function to run
-;
+psMemAllocateCallback psMemAllocateCallbackSet(
+        psMemAllocateCallback func      ///< Function to run
+);
 
 /// Set call back for when a particular memory block is freed
-psMemCallback psMemFreeCallbackSet(psMemFreeCallback func) ///< Function to run
-;
+psMemFreeCallback psMemFreeCallbackSet(
+        psMemFreeCallback func          ///< Function to run
+);
 
 /// get next memory ID
@@ -121,10 +130,12 @@
 
 /// set p_psMemAllocateID to id
-long psMemAllocateIDSet(long id) ///< ID to set
-;
+long psMemAllocateIDSet(
+        long id                         ///< ID to set
+);
 
 /// set p_psMemFreeID to id
-long psMemFreeIDSet(long id)  ///< ID to set
-;
+long psMemFreeIDSet(
+        long id                         ///< ID to set
+);
 
 //@} End of public Functions
Index: /trunk/psLib/src/sysUtils/Makefile
===================================================================
--- /trunk/psLib/src/sysUtils/Makefile	(revision 431)
+++ /trunk/psLib/src/sysUtils/Makefile	(revision 432)
@@ -13,7 +13,5 @@
 include ../Makefile.Globals
 
-CFLAGS = $(CFLAGS_MODULE) $(INCLUDE_GLOBAL)
-
-SRC_OBJS = psTrace.o
+SRC_OBJS = psMemory.o psError.o psAbort.o
 
 libpsSysUtils.a: $(SRC_OBJS)
Index: /trunk/psLib/src/sysUtils/psAbort.c
===================================================================
--- /trunk/psLib/src/sysUtils/psAbort.c	(revision 431)
+++ /trunk/psLib/src/sysUtils/psAbort.c	(revision 432)
@@ -9,6 +9,6 @@
  *  @author Eric Van Alst, MHPCC
  *   
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 20:37:56 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -57,9 +57,5 @@
 /*****************************************************************************/
 
-void psAbort(
-    char *name,   
-    char *fmt,
-    ...   
-)
+void psAbort(const char *name, const char *fmt,... )
 {
     va_list    argPtr;     // variable list arguement pointer
Index: /trunk/psLib/src/sysUtils/psAbort.h
===================================================================
--- /trunk/psLib/src/sysUtils/psAbort.h	(revision 431)
+++ /trunk/psLib/src/sysUtils/psAbort.h	(revision 432)
@@ -9,6 +9,6 @@
  *  @author Eric Van Alst, MHPCC
  *   
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 20:37:12 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -45,6 +45,6 @@
  */
 void psAbort(
-    char *name,   /**< Source of abort such as file or function detected */
-    char *fmt,    /**< A printf style formatting statement defining msg */
+    const char* name,                   ///< Source of abort such as file or function detected
+    const char* fmt,                    ///< A printf style formatting statement defining msg
     ...
 );
Index: /trunk/psLib/src/sysUtils/psError.c
===================================================================
--- /trunk/psLib/src/sysUtils/psError.c	(revision 431)
+++ /trunk/psLib/src/sysUtils/psError.c	(revision 432)
@@ -10,6 +10,6 @@
  *  @author Eric Van Alst, MHPCC
  *   
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 19:04:58 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -57,9 +57,5 @@
 /*****************************************************************************/
 
-void psError(
-   char *name,   
-   char *fmt,
-   ...   
-)
+void psError(const char *name,const char *fmt, ...)
 {
     va_list    argPtr;        // variable list arguement pointer
Index: /trunk/psLib/src/sysUtils/psError.h
===================================================================
--- /trunk/psLib/src/sysUtils/psError.h	(revision 431)
+++ /trunk/psLib/src/sysUtils/psError.h	(revision 432)
@@ -10,6 +10,6 @@
  *  @author Eric Van Alst, MHPCC
  *   
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 19:03:41 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -45,6 +45,6 @@
  */
 void psError(
-    char *name,   /**< Source of error such as file or function detected */
-    char *fmt,    /**< A printf style formatting statement defining msg */
+    const char *name,                   ///< Source of error such as file or function detected
+    const char *fmt,                    ///< A printf style formatting statement defining msg
     ...
 );
Index: /trunk/psLib/src/sysUtils/psMemory.c
===================================================================
--- /trunk/psLib/src/sysUtils/psMemory.c	(revision 431)
+++ /trunk/psLib/src/sysUtils/psMemory.c	(revision 432)
@@ -8,6 +8,6 @@
  *  @author Robert Lupton, Princeton University
  *
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 21:22:09 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -20,8 +20,9 @@
 #include "psMemory.h"
 #include "psError.h"
+#include "psAbort.h"
 
 #define P_PS_MEMMAGIC (void *)0xdeadbeef // Magic number in psMemBlock header
 
-static int bad_memblock(const psMemBlock *m, int quiet);
+static int checkMemBlock(const psMemBlock *m, const char* funcName);
 static int numMemBlock = 0;             // size of memBlocks
 static psMemBlock **memBlocks = NULL;
@@ -58,22 +59,17 @@
                           const char *file, int lineno)
 {
-    if (bad_memblock(ptr, 0)) {
-        fprintf(stderr, "Memory corruption or an attempt to manipulate memory "
-                "not allocated with psAlloc at %s", file);
-        if (lineno > 0) {
-            fprintf(stderr, ":%d", lineno);
-        }
-        fprintf(stderr, "\n");
-    } else if (ptr->refCounter <= 0) {
-        psError(__func__, PS_ERR_BADFREE, PS_NEW_ERROR,
-                "Block %ld allocated at %s:%d freed more than once at %s:%d\n",
-                ptr->id, ptr->file, ptr->lineno, file, lineno);
-    } else if (ptr->refCounter > 1) {
-        psError(__func__,  PS_ERR_BADFREE, PS_NEW_ERROR,
-                "Block %ld allocated at %s:%d freed while still referenced at %s:%d\n",
-                ptr->id, ptr->file, ptr->lineno, file, lineno);
-    }
-
-    if (lineno > 0) {
+    checkMemBlock(ptr, __func__);
+
+	if (ptr->refCounter <= 0) {
+		psError(__func__,
+		        "Block %ld allocated at %s:%d freed more than once at %s:%d\n",
+				ptr->id, ptr->file, ptr->lineno, file, lineno);
+	} else if (ptr->refCounter > 1) {
+		psError(__func__,
+		        "Block %ld allocated at %s:%d freed while still referenced at %s:%d\n",
+				ptr->id, ptr->file, ptr->lineno, file, lineno);
+	}
+
+	if (lineno > 0) {
         psAbort(__func__, "Detected a problem in the memory system at %s:%d", file, lineno);
     }
@@ -123,19 +119,15 @@
  * isn't resignalled)
  */
-static int memAllocateCallbackDefault(const psMemBlock *ptr)
+static long memAllocateCallbackDefault(const psMemBlock *ptr)
 {
     static int incr = 0;  // "p_psMemAllocateID += incr"
 
-    assert (ptr != NULL);  // prevent compiler warnings
-
     return incr;
 }
 
-static int memFreeCallbackDefault(const psMemBlock *ptr)
+static long memFreeCallbackDefault(const psMemBlock *ptr)
 {
     static int incr = 0;  // "p_psMemFreeID += incr"
 
-    assert (ptr != NULL);  // prevent compiler warnings
-
     return incr;
 }
@@ -144,10 +136,10 @@
  * The default callbacks, and the routines to change them
  */
-static psMemCallback memAllocateCallback = memAllocateCallbackDefault;
-static psMemCallback memFreeCallback = memFreeCallbackDefault;
-
-psMemCallback psMemAllocateSetCallback(psMemCallback func)
-{
-    psMemCallback old = memAllocateCallback;
+static psMemAllocateCallback memAllocateCallback = memAllocateCallbackDefault;
+static psMemFreeCallback memFreeCallback = memFreeCallbackDefault;
+
+psMemAllocateCallback psMemAllocateSetCallback(psMemAllocateCallback func)
+{
+    psMemFreeCallback old = memAllocateCallback;
 
     if (func != NULL) {
@@ -160,7 +152,7 @@
 }
 
-psMemCallback psMemFreeSetCallback(psMemCallback func)
-{
-    psMemCallback old = memFreeCallback;
+psMemFreeCallback psMemFreeSetCallback(psMemFreeCallback func)
+{
+    psMemFreeCallback old = memFreeCallback;
 
     if (func != NULL) {
@@ -191,28 +183,19 @@
 
 static int
-bad_memblock(const psMemBlock *m, // block to check
-             int quiet)   // be quiet?
+checkMemBlock(const psMemBlock *m, // block to check
+             const char* funcName)   // be quiet?
 {
     if (m == NULL) {
-        if (!quiet) {
-            psError(__func__,  PS_ERR_MEMORY_CORRUPTION, PS_NEW_ERROR,
-                    "psMemCheckCorruption: NULL memory block\n");
-        }
+        psError(funcName,"Memory Corruption: NULL memory block found.");
         return(1);
     }
 
     if (!ALIGNED(m)) {
-        if (!quiet) {
-            psError(__func__,  PS_ERR_MEMORY_CORRUPTION, PS_NEW_ERROR,
-                    "psMemCheckCorruption: non-aligned memory block\n");
-        }
+        psError(funcName, "psMemCheckCorruption: non-aligned memory block");
         return(1);
     }
 
-    if (m->magic0 != P_PS_MEMMAGIC || m->magic != P_PS_MEMMAGIC) {
-        if (!quiet) {
-            psError(__func__, PS_ERR_MEMORY_CORRUPTION, PS_NEW_ERROR,
-                    "psMemCheckCorruption: memory block %ld is corrupted\n", m->id);
-        }
+    if (m->startblock != P_PS_MEMMAGIC || m->endblock != P_PS_MEMMAGIC) {
+        psError(funcName, "psMemCheckCorruption: memory block %ld is corrupted", m->id);
         return(1);
     }
@@ -231,8 +214,8 @@
     for (int i = 1; i <= memid; i++) {
         if (memBlocks[i] != NULL) {
-            if (bad_memblock(memBlocks[i], 1)) {
+            if (checkMemBlock(memBlocks[i], __func__)) {
                 nbad++;
 
-                memProblemCallback(memBlocks[i], "(psMemCheckCorruption)", 0);
+                memProblemCallback(memBlocks[i], __func__, __LINE__);
 
                 if (abort_on_error) {
@@ -263,5 +246,6 @@
     ptr->file = file;
     *(int *)&ptr->lineno = lineno;
-    *(void **)&ptr->magic0 = *(void **)&ptr->magic = P_PS_MEMMAGIC;
+    ptr->startblock = P_PS_MEMMAGIC;
+	ptr->endblock = P_PS_MEMMAGIC;
 
     ptr->refCounter = 1;  // one user so far
@@ -273,7 +257,7 @@
         p_psMemAllocateID += memAllocateCallback(ptr);
     }
-    if (memid >= nMemBlock) {
-        nMemBlock = (nMemBlock == 0) ? 100000 : 2*nMemBlock;
-        memBlocks = realloc(memBlocks, nMemBlock*sizeof(psMemBlock *)); // NOT psRealloc
+    if (memid >= numMemBlock) {
+        numMemBlock = (numMemBlock == 0) ? 100000 : 2*numMemBlock;
+        memBlocks = realloc(memBlocks, numMemBlock*sizeof(psMemBlock *)); // NOT psRealloc
     }
     memBlocks[ptr->id] = ptr;
@@ -311,5 +295,5 @@
     }
 
-    if (bad_memblock(ptr, 0)) {
+    if (checkMemBlock(ptr, "psFree") != 0) {
         memProblemCallback(ptr, file, lineno); // we may not own this block; don't free it
     } else {
@@ -369,5 +353,5 @@
     }
 
-    assert (*arr == NULL);  // Don't generate a memory leak!
+    p_psFree(*arr,__FILE__, __LINE__);  // Don't generate a memory leak!
 
     *arr = p_psAlloc(nleak*sizeof(psMemBlock), __FILE__, __LINE__);
@@ -395,7 +379,7 @@
     psMemBlock *ptr = ((psMemBlock *)vptr) - 1;
 
-    if (bad_memblock(ptr, 0))
-    {
-        memProblemCallback(ptr, "(psMemGetRefCounter)", -1);
+    if (checkMemBlock(ptr, __func__) != 0)
+    {
+        memProblemCallback(ptr, __func__, __LINE__);
     }
 
@@ -412,7 +396,7 @@
     psMemBlock *ptr = ((psMemBlock *)vptr) - 1;
 
-    if (bad_memblock(ptr, 0))
-    {
-        memProblemCallback(ptr, "(psMemIncrRefCounter)", -1);
+    if (checkMemBlock(ptr, __func__))
+    {
+        memProblemCallback(ptr, __func__, __LINE__);
     }
 
@@ -431,7 +415,7 @@
     psMemBlock *ptr = ((psMemBlock *)vptr) - 1;
 
-    if (bad_memblock(ptr, 0))
-    {
-        memProblemCallback(ptr, "(psMemDecrRefCounter)", -1);
+    if (checkMemBlock(ptr, __func__))
+    {
+        memProblemCallback(ptr, __func__, __LINE__);
     }
 
Index: /trunk/psLib/src/sysUtils/psMemory.h
===================================================================
--- /trunk/psLib/src/sysUtils/psMemory.h	(revision 431)
+++ /trunk/psLib/src/sysUtils/psMemory.h	(revision 432)
@@ -14,6 +14,6 @@
  *  @author Robert Lupton, Princeton University
  *
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-04-15 21:22:09 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-04-16 02:18:57 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -79,40 +79,49 @@
 
 /// Check for memory leaks
-int psMemCheckLeaks(int id0,  ///< don't list blocks with id < id0
-                    psMemBlock ***arr, ///< pointer to array of pointers to leaked blocks, or NULL
-                    FILE *fd)  ///< print list of leaks to fd (or NULL)
-;
+int psMemCheckLeaks(
+        int id0,                        ///< don't list blocks with id < id0
+        psMemBlock ***arr,              ///< pointer to array of pointers to leaked blocks, or NULL
+        FILE *fd                        ///< print list of leaks to fd (or NULL)
+);
 
 /// Check for memory corruption
-int psMemCheckCorruption(int abort_on_error) ///< Abort on detecting corruption?
-;
+int psMemCheckCorruption(
+        int abort_on_error              ///< Abort on detecting corruption?
+);
 
 /// Return reference counter
-int psMemGetRefCounter(void *vptr) ///< Pointer to get refCounter for
-;
+int psMemGetRefCounter(
+        void *vptr                      ///< Pointer to get refCounter for
+);
 
 /// Increment reference counter and return the pointer
-void *psMemIncrRefCounter(void *vptr) ///< Pointer to increment refCounter, and return
-;
+void *psMemIncrRefCounter(
+        void *vptr                      ///< Pointer to increment refCounter, and return
+);
 
 /// Decrement reference counter and return the pointer
-void *psMemDecrRefCounter(void *vptr) ///< Pointer to decrement refCounter, and return
-;
+void *psMemDecrRefCounter(
+        void *vptr                      ///< Pointer to decrement refCounter, and return
+);
 
 /// Set callback for problems
-psMemProblemCallback psMemProblemCallbackSet(psMemProblemCallback func) ///< Function to run
-;
+psMemProblemCallback psMemProblemCallbackSet(
+        psMemProblemCallback func       ///< Function to run
+);
 
 /// Set callback for out-of-memory
-psMemExhaustedCallback psMemExhaustedCallbackSet(psMemExhaustedCallback func) ///< Function to run
-;
+psMemExhaustedCallback psMemExhaustedCallbackSet(
+        psMemExhaustedCallback func     ///< Function to run
+);
 
 /// Set call back for when a particular memory block is allocated
-psMemCallback psMemAllocateCallbackSet(psMemAllocateCallback func) ///< Function to run
-;
+psMemAllocateCallback psMemAllocateCallbackSet(
+        psMemAllocateCallback func      ///< Function to run
+);
 
 /// Set call back for when a particular memory block is freed
-psMemCallback psMemFreeCallbackSet(psMemFreeCallback func) ///< Function to run
-;
+psMemFreeCallback psMemFreeCallbackSet(
+        psMemFreeCallback func          ///< Function to run
+);
 
 /// get next memory ID
@@ -121,10 +130,12 @@
 
 /// set p_psMemAllocateID to id
-long psMemAllocateIDSet(long id) ///< ID to set
-;
+long psMemAllocateIDSet(
+        long id                         ///< ID to set
+);
 
 /// set p_psMemFreeID to id
-long psMemFreeIDSet(long id)  ///< ID to set
-;
+long psMemFreeIDSet(
+        long id                         ///< ID to set
+);
 
 //@} End of public Functions
