Index: trunk/psLib/src/collections/psVector.c
===================================================================
--- trunk/psLib/src/collections/psVector.c	(revision 1008)
+++ trunk/psLib/src/collections/psVector.c	(revision 1073)
@@ -8,6 +8,6 @@
  *  @author Ross Harman, MHPCC
  *
- *  @version $Revision: 1.10 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-06-12 01:33:16 $
+ *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-06-23 23:00:15 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -49,4 +49,5 @@
 /*  FUNCTION IMPLEMENTATION - LOCAL                                          */
 /*****************************************************************************/
+static void vectorFree(psVector *restrict psVec);
 
 /*****************************************************************************/
@@ -68,4 +69,5 @@
     // Create vector struct
     psVec = (psVector *)psAlloc(sizeof(psVector));
+    p_psMemSetDeallocator(psVec,(psFreeFcn)vectorFree);
 
     psVec->type.dimen = PS_DIMEN_VECTOR;
@@ -132,5 +134,5 @@
     if(nalloc < 1) {
         psError(__func__, "Invalid value for nalloc (%d)\n", nalloc);
-        psVectorFree(in);
+        psFree(in);
         return NULL;
     }
@@ -154,5 +156,5 @@
 }
 
-void psVectorFree(psVector *restrict psVec)
+static void vectorFree(psVector *restrict psVec)
 {
     if (psVec == NULL) {
@@ -160,9 +162,15 @@
     }
 
+    if (psVec->type.type == PS_TYPE_PTR) {
+        for(int i = 0; i < psVec->n; i++) {
+            psFree(psVec->data.PTR[i]);
+            psVec->data.PTR[i] = NULL;
+        }
+    }
+
     psFree(psVec->data.V);
-    psFree(psVec);
 }
 
-void psVectorElementFree(psVector *restrict psVec, void (*elemFree)(void *))
+void psVectorElementFree(psVector *restrict psVec)
 {
 
@@ -176,10 +184,6 @@
     }
 
-    for(int i = 0; i < psVec->nalloc; i++) {
-        if(elemFree == NULL) {
-            psMemDecrRefCounter(psVec->data.PTR[i]);
-        } else {
-            elemFree(psMemDecrRefCounter(psVec->data.PTR[i]));
-        }
+    for(int i = 0; i < psVec->n; i++) {
+        psFree(psVec->data.PTR[i]);
         psVec->data.PTR[i] = NULL;
     }
