Index: trunk/psLib/src/types/psPixels.c
===================================================================
--- trunk/psLib/src/types/psPixels.c	(revision 16838)
+++ trunk/psLib/src/types/psPixels.c	(revision 16873)
@@ -7,6 +7,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.38 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2008-02-27 02:18:14 $
+ *  @version $Revision: 1.39 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2008-03-07 22:16:38 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -251,34 +251,27 @@
     PS_ASSERT_PIXELS_NON_NULL(pixels, NULL);
 
-    long pixelsN = pixels->n;
-    psPixelCoord* pixelsData = pixels->data;
-
-    if (out == NULL) {
-        // simple copy pixels
-        out = psPixelsCopy(out,pixels);
+    long pixelsN = pixels->n;           // Size of input
+    psPixelCoord* pixelsData = pixels->data; // Dereference input
+
+    if (!out) {
+        // Simply copy pixels
+        out = psPixelsCopy(out, pixels);
         return out;
     }
 
-    // make sure the out is large enough to fit the result
-    long outN = out->n;
-    out = psPixelsRealloc(out,outN + pixelsN);
-    psPixelCoord* outData = out->data;
+    long outN = out->n;                 // Size of output
+    psPixelCoord* outData = out->data;  // Dereference output
 
     // sort the OUT array to help in searching for duplicates later
-    qsort(outData, outN, sizeof(psPixelCoord),
-          (qsortCompareFunc)comparePixelCoord);
+    qsort(outData, outN, sizeof(psPixelCoord), (qsortCompareFunc)comparePixelCoord);
 
     // add non-duplicate values in pixels to out
-    psPixelCoord pCoord;
-    long end = outN;
     for (long n = 0; n < pixelsN; n++) {
-        pCoord = pixelsData[n];
-        if (bsearch(&pCoord, outData, outN, sizeof(psPixelCoord),
-                    (qsortCompareFunc)comparePixelCoord) == NULL) {
+        psPixelCoord pCoord = pixelsData[n]; // Coordinate of interest
+        if (!bsearch(&pCoord, outData, outN, sizeof(psPixelCoord), (qsortCompareFunc)comparePixelCoord)) {
             // no match in OUT array of this value
-            outData[end++] = pCoord;
+            psPixelsAdd(out, 0, pCoord.x, pCoord.y);
         }
     }
-    out->n = end; // set number of elements to reflect added data
 
     return out;
