Index: trunk/psLib/src/sys/psMemory.c
===================================================================
--- trunk/psLib/src/sys/psMemory.c	(revision 1730)
+++ trunk/psLib/src/sys/psMemory.c	(revision 1810)
@@ -1,3 +1,2 @@
-
 /** @file  psMemory.c
 *
@@ -9,6 +8,6 @@
 *  @author Robert Lupton, Princeton University
 *
-*  @version $Revision: 1.37 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-09-08 21:06:00 $
+*  @version $Revision: 1.38 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-09-14 23:48:25 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -341,4 +340,5 @@
     ptr->file = file;
     ptr->freeFcn = NULL;
+    ptr->persistent = false;
     *(unsigned int *)&ptr->lineno = lineno;
     *(void **)((int8_t *) (ptr + 1) + size) = P_PS_MEMMAGIC;
@@ -446,5 +446,8 @@
 
     for (psMemBlock* iter = topBlock; iter != NULL; iter = iter->nextBlock) {
-        if ((psMemGetRefCounter(iter + 1) > 0) && (iter->id >= id0)) {
+        if ( (iter->refCounter > 0) &&
+                (! iter->persistent) &&
+                (iter->id >= id0)) {
+
             nleak++;
 
@@ -469,5 +472,8 @@
 
     for (psMemBlock* iter = topBlock; iter != NULL; iter = iter->nextBlock) {
-        if ((psMemGetRefCounter(iter + 1) > 0) && (iter->id >= id0)) {
+        if ( (iter->refCounter > 0) &&
+                (! iter->persistent) &&
+                (iter->id >= id0)) {
+
             (*arr)[j++] = iter;
             if (j == nleak) {              // found them all
@@ -651,2 +657,32 @@
     return ptr->freeFcn;
 }
+
+bool p_psMemGetPersistent(void *vptr)
+{
+    if (vptr == NULL) {
+        return NULL;
+    }
+
+    psMemBlock* ptr = ((psMemBlock* ) vptr) - 1;
+
+    if (checkMemBlock(ptr, __func__) != 0) {
+        memProblemCallback(ptr, __func__, __LINE__);
+    }
+
+    return ptr->persistent;
+}
+
+void p_psMemSetPersistent(void *vptr,bool value)
+{
+    if (vptr == NULL) {
+        return;
+    }
+
+    psMemBlock* ptr = ((psMemBlock* ) vptr) - 1;
+
+    if (checkMemBlock(ptr, __func__) != 0) {
+        memProblemCallback(ptr, __func__, __LINE__);
+    }
+
+    ptr->persistent = value;
+}
