Index: /branches/jch-memory/psLib/src/sys/psMemory.c
===================================================================
--- /branches/jch-memory/psLib/src/sys/psMemory.c	(revision 10891)
+++ /branches/jch-memory/psLib/src/sys/psMemory.c	(revision 10892)
@@ -8,6 +8,6 @@
 *  @author Robert Lupton, Princeton University
 *
-*  @version $Revision: 1.88.2.4 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2007-01-03 04:46:32 $
+*  @version $Revision: 1.88.2.5 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2007-01-03 21:53:56 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -24,6 +24,5 @@
 #include "psMemory.h"
 #include "psError.h"
-#include "psAssert.h"
-#include "psLogMsg.h"
+
 #include "psBitSet.h"
 #include "psFits.h"
@@ -51,8 +50,20 @@
 // this and would deadlock while trying to allocate memory.
 #define PS_MEM_ABORT(name, ...) \
-fprintf(stderr, "Memory Management Error. This error can not be logged.\n") ;\
+P_PS_MEM_ABORT(__FILE__, __LINE__, __func__, name, __VA_ARGS__)
+
+#define P_PS_MEM_ABORT(filename, lineno, func, name, ...) \
+fprintf(stderr, "%s (%s:%d) ", func, filename, lineno); \
 fprintf(stderr, __VA_ARGS__);\
+psErrorStackPrint(stderr, "\nAborting.  Error stack:"); \
 fprintf(stderr, "\n");\
 abort();
+
+#define PS_MEM_ERROR(code, new, ...) \
+P_PS_MEM_ERROR(__FILE__, __LINE__, __func__, code, new, __VA_ARGS__)
+
+#define P_PS_MEM_ERROR(filename, lineno, func, code, new, ...) \
+fprintf(stderr, "%s (%s:%d) ", func, filename, lineno); \
+fprintf(stderr, __VA_ARGS__);\
+fprintf(stderr, "\n");
 
 static psS32 checkMemBlock(const psMemBlock* m, const char *funcName);
@@ -109,7 +120,7 @@
 {
     if (ptr->refCounter < 1) {
-        psError(PS_ERR_MEMORY_CORRUPTION, false,
-                _("Block %lu, allocated at %s:%d, freed multiple times at %s:%d."),
-                (unsigned long)ptr->id, ptr->file, ptr->lineno, file, lineno);
+        PS_MEM_ERROR(PS_ERR_MEMORY_CORRUPTION, false,
+                     _("Block %lu, allocated at %s:%d, freed multiple times at %s:%d."),
+                     (unsigned long)ptr->id, ptr->file, ptr->lineno, file, lineno);
     }
 
@@ -131,6 +142,6 @@
 
     if (m == NULL) {
-        psError(PS_ERR_MEMORY_CORRUPTION, true,
-                _("NULL memory block found."));
+        PS_MEM_ERROR(PS_ERR_MEMORY_CORRUPTION, true,
+                     _("NULL memory block found."));
         return 1;
     }
@@ -138,20 +149,20 @@
     if (m->refCounter == 0) {
         // using an unreferenced block of memory, are you?
-        psError(PS_ERR_MEMORY_CORRUPTION, true,
-                _("Memory block %lu was freed but still being used."),
-                (unsigned long)m->id);
+        PS_MEM_ERROR(PS_ERR_MEMORY_CORRUPTION, true,
+                     _("Memory block %lu was freed but still being used."),
+                     (unsigned long)m->id);
         return 1;
     }
 
     if (m->startblock != P_PS_MEMMAGIC || m->endblock != P_PS_MEMMAGIC) {
-        psError(PS_ERR_MEMORY_CORRUPTION, true,
-                _("Memory block %lu is corrupted; buffer underflow detected."),
-                (unsigned long)m->id);
+        PS_MEM_ERROR(PS_ERR_MEMORY_CORRUPTION, true,
+                     _("Memory block %lu is corrupted; buffer underflow detected."),
+                     (unsigned long)m->id);
         return 1;
     }
     if (*(psPtr *)((int8_t *) (m + 1) + m->userMemorySize) != P_PS_MEMMAGIC) {
-        psError(PS_ERR_MEMORY_CORRUPTION, true,
-                _("Memory block %lu is corrupted; buffer overflow detected."),
-                (unsigned long)m->id);
+        PS_MEM_ERROR(PS_ERR_MEMORY_CORRUPTION, true,
+                     _("Memory block %lu is corrupted; buffer overflow detected."),
+                     (unsigned long)m->id);
         return 1;
     }
@@ -709,5 +720,5 @@
                     psPtr ptr)
 {
-    PS_ASSERT_PTR(ptr, false);
+    //    PS_ASSERT_PTR(ptr, false);
 
     switch(type) {
@@ -716,6 +727,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -724,6 +735,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -732,6 +743,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -740,6 +751,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -748,6 +759,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -756,6 +767,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -764,6 +775,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -772,6 +783,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -780,6 +791,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -788,6 +799,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -796,6 +807,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -804,6 +815,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -812,6 +823,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -820,6 +831,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -828,6 +839,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -836,6 +847,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -844,6 +855,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -852,6 +863,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -860,6 +871,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -868,6 +879,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -876,6 +887,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -884,6 +895,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -892,6 +903,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -900,6 +911,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -908,6 +919,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -916,6 +927,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -924,6 +935,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -932,6 +943,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -940,6 +951,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -948,6 +959,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -956,6 +967,6 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
@@ -964,11 +975,11 @@
             return true;
         else {
-            psError(PS_ERR_BAD_PARAMETER_VALUE, false,
-                    "Incorrect pointer.  Datatypes do not match.\n");
+            PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_VALUE, false,
+                         "Incorrect pointer.  Datatypes do not match.\n");
             break;
         }
     default:
-        psError(PS_ERR_BAD_PARAMETER_TYPE, true,
-                "Invalid datatype specified.\n");
+        PS_MEM_ERROR(PS_ERR_BAD_PARAMETER_TYPE, true,
+                     "Invalid datatype specified.\n");
     }
     return false;
