Index: /trunk/psLib/src/collections/psVector.c
===================================================================
--- /trunk/psLib/src/collections/psVector.c	(revision 688)
+++ /trunk/psLib/src/collections/psVector.c	(revision 689)
@@ -19,6 +19,6 @@
  *  @author Ross Harman, MHPCC
  *   
- *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-05-13 23:36:27 $
+ *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-05-14 21:05:52 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -104,13 +104,10 @@
     elementSize = PSELEMTYPE_SIZEOF(elemType);
 
-
-    if(psVec == NULL) {                                 // For creating new psVector
+    if(psVec == NULL) {                                     // For creating new psVector
         psVec = psVectorAlloc(psVec->type.type, nalloc);
-    } else if(psVec->nalloc != nalloc) {                // No need to realloc to same size
-        psVec->vec.v = psRealloc(psVec->vec.v,nalloc*elementSize);
-        psVec->nalloc = nalloc;
+    } else if(psVec->nalloc != nalloc) {                    // No need to realloc to same size
         if(nalloc < psVec->n) {
             if (elemType == PS_TYPE_PTR) {
-                for (int i = nalloc; i < psVec->n; i++) {               // For reduction in vector size
+                for (int i = nalloc; i < psVec->n; i++) {   // For reduction in vector size
                     psMemDecrRefCounter(psVec->vec.vp[i]);
                 }
@@ -118,4 +115,8 @@
             psVec->n = nalloc;
         }
+
+        // Realloc after decrementation to avoid accessing freed array elements
+        psVec->vec.v = psRealloc(psVec->vec.v,nalloc*elementSize);
+        psVec->nalloc = nalloc;
     }
 
Index: /trunk/psLib/src/mathtypes/psVector.c
===================================================================
--- /trunk/psLib/src/mathtypes/psVector.c	(revision 688)
+++ /trunk/psLib/src/mathtypes/psVector.c	(revision 689)
@@ -19,6 +19,6 @@
  *  @author Ross Harman, MHPCC
  *   
- *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-05-13 23:36:27 $
+ *  @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-05-14 21:05:52 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -104,13 +104,10 @@
     elementSize = PSELEMTYPE_SIZEOF(elemType);
 
-
-    if(psVec == NULL) {                                 // For creating new psVector
+    if(psVec == NULL) {                                     // For creating new psVector
         psVec = psVectorAlloc(psVec->type.type, nalloc);
-    } else if(psVec->nalloc != nalloc) {                // No need to realloc to same size
-        psVec->vec.v = psRealloc(psVec->vec.v,nalloc*elementSize);
-        psVec->nalloc = nalloc;
+    } else if(psVec->nalloc != nalloc) {                    // No need to realloc to same size
         if(nalloc < psVec->n) {
             if (elemType == PS_TYPE_PTR) {
-                for (int i = nalloc; i < psVec->n; i++) {               // For reduction in vector size
+                for (int i = nalloc; i < psVec->n; i++) {   // For reduction in vector size
                     psMemDecrRefCounter(psVec->vec.vp[i]);
                 }
@@ -118,4 +115,8 @@
             psVec->n = nalloc;
         }
+
+        // Realloc after decrementation to avoid accessing freed array elements
+        psVec->vec.v = psRealloc(psVec->vec.v,nalloc*elementSize);
+        psVec->nalloc = nalloc;
     }
 
