Index: /trunk/psLib/src/mathtypes/psVector.c
===================================================================
--- /trunk/psLib/src/mathtypes/psVector.c	(revision 14266)
+++ /trunk/psLib/src/mathtypes/psVector.c	(revision 14267)
@@ -10,6 +10,6 @@
 *  @author Joshua Hoblitt, University of Hawaii
 *
-*  @version $Revision: 1.96 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2007-03-14 00:39:51 $
+*  @version $Revision: 1.97 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2007-07-17 20:32:02 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -347,5 +347,5 @@
 case PS_TYPE_##NAME: { \
     ps##NAME temp; \
-    ps##NAME *value = outVector->data.NAME; \
+    ps##NAME *value = vector->data.NAME; \
     for (;;) { \
         if (l > 0) { \
@@ -356,5 +356,5 @@
             if (--ir == 0) { \
                 value[0] = temp; \
-                return outVector; \
+                return true; \
             } \
         } \
@@ -376,27 +376,15 @@
 break;
 
-psVector* psVectorSort(psVector* outVector,
-                       const psVector* inVector)
-{
-    if (!inVector) {
-        psError(PS_ERR_BAD_PARAMETER_NULL, true,
-                _("psVectorSort can not sort a NULL psVector."));
-        psFree(outVector);
-        return NULL;
-    }
-
-    outVector = psVectorCopy(outVector, inVector, inVector->type.type);
-    if (outVector == NULL) {
-        psError(PS_ERR_BAD_PARAMETER_NULL, true,
-                "Error in psVectorSort:  psVectorCopy returned NULL vector!\n");
-        return NULL;
-    }
-    long N = outVector->n;                    // Number of elements
+bool psVectorSortInPlace(const psVector *vector)
+{
+    PS_ASSERT_VECTOR_NON_NULL(vector, false);
+
+    long N = vector->n;                    // Number of elements
     if (N < 2) {
-        return outVector;
+        return true;
     }
     long l = N >> 1;
     long ir = N - 1;
-    switch (outVector->type.type) {
+    switch (vector->type.type) {
         PSVECTOR_SORT_CASE(U8);
         PSVECTOR_SORT_CASE(U16);
@@ -412,8 +400,34 @@
         psError(PS_ERR_BAD_PARAMETER_TYPE, true,
                 _("Input psVector is an unsupported type (0x%x)."),
-                inVector->type.type);
+                vector->type.type);
+        return false;
+    }
+    return true;
+}
+
+psVector* psVectorSort(psVector* outVector,
+                       const psVector* inVector)
+{
+    if (!inVector) {
+        psError(PS_ERR_BAD_PARAMETER_NULL, true,
+                _("psVectorSort can not sort a NULL psVector."));
         psFree(outVector);
         return NULL;
     }
+
+    if (outVector != inVector) {
+        outVector = psVectorCopy(outVector, inVector, inVector->type.type);
+        if (!outVector) {
+            psError(PS_ERR_BAD_PARAMETER_NULL, true,
+                    "Error in psVectorSort:  psVectorCopy returned NULL vector!\n");
+            return NULL;
+        }
+    }
+
+    if (!psVectorSortInPlace(outVector)) {
+        psFree(outVector);
+        return NULL;
+    }
+
     return outVector;
 }
Index: /trunk/psLib/src/mathtypes/psVector.h
===================================================================
--- /trunk/psLib/src/mathtypes/psVector.h	(revision 14266)
+++ /trunk/psLib/src/mathtypes/psVector.h	(revision 14267)
@@ -10,6 +10,6 @@
  * @author Joshua Hoblitt, University of Hawaii
  *
- * @version $Revision: 1.67 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-03-14 00:39:51 $
+ * @version $Revision: 1.68 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-07-17 20:32:02 $
  * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
  */
@@ -222,4 +222,12 @@
 #endif // ifdef DOXYGEN
 
+/** Sort a vector in-place
+ *
+ * Sorts in ascending order
+ *
+ * @return  bool           Success or failure
+ */
+bool psVectorSortInPlace(const psVector *vector ///< Vector to sort
+    );
 
 /** Sort an array of floats.
